import java.util.HashSet;
import java.util.Set;//1、 将字符串”One world one Dream”进行以下处理
//1) 将每个单词第一个字母转换为大写,然后输出
//2) 将1)得到的结果过滤重复的单词
//3) 将2)得到的结果去掉所有的空格,然后将字符串倒置
//4) 将3) 得到的结果统计各个字符的个数public class StringE1 {
public static void main(String[] args) {
String s = "One world one Dream";
String[] sa = s.split(" ");
for (int i = 0; i < sa.length; i++) {
sa[i] = sa[i].replace(sa[i].substring(0, 1), sa[i].substring(0, 1)
.toUpperCase());
System.out.print(sa[i]+" "); }
System.out.println();
System.out.println("--------------");
// char[]a = new char[sa.length];
String s1 = "";
for (int i = 0; i < sa.length; i++) {
s1 = s1 + sa[i] + " ";
}
E1(s1);
} private static void E1(String s1) {
Set as = new HashSet();
String[] a = s1.split(" ");
String s2 = "";
for (int i = 0; i < a.length; i++) {
as.add(a[i]);
}
for (Object ss : as) {
s2 =   ss +s2 + " ";
}
System.out.print(s2);
System.out.println();
System.out.println("--------------");
String[] a2 = s1.split(" ");
String s3 = "";
for (int i = 0; i < a2.length; i++) {
s3 = s3 + a[i];
}
char[] a1 = new char[s3.length()];
for (int i = s3.length() - 1; i >= 0; i--) {
a1[s3.length() - 1 - i] = s3.charAt(i);
}
String s4 = "";
for (int i = 0; i < a1.length; i++) {
System.out.print(a1[i]);
s4 = s4 + a1[i];
}
System.out.println();
System.out.println("--------------");
while (true) {
int len = s4.length();
if (len > 0) {
String ch = s4.substring(0, 1);
s4 = s4.replace(ch, "");
System.out.println("字母 '" + ch + "' 出现次数 : "
+ (len - s4.length()));
} else {
break;
} }
}
}这样的题目 这样写 感觉非常不健壮 漏洞不少 有没高手帮忙改进一下

解决方案 »

  1.   

    去看看apache common utils里面的StringUtils, 很多方法都是现成的. 
    如果要学习, 也可以看看那里面的源码. 
      

  2.   

    package com.sr178.test;import java.util.HashMap;
    import java.util.HashSet;
    import java.util.Iterator;public class StringTest { /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
              String str ="One world one Dream";
              //第一个字母变成大写
              String q1=Q1(str);
              System.out.println("第1题答案:"+q1);
              //第二个过滤重复单词
              String q2=Q2(q1);
              System.out.println("第2题答案:"+q2);
              
              //第三个去掉空格 倒置
              String q3=Q3(q2);
              System.out.println("第3题答案:"+q3);
              
              //第四个 答案
              Q4(q3);
    }

       public static String Q1(String str){
       String[] arr = str.split("\\s");
       String str2=" ";
           for(int i= 0;i<arr.length;i++ ){
            arr[i]=arr[i].replaceFirst("([a-z]|[A-Z])",arr[i].substring(0, 1).toUpperCase());
            str2 +=" "+ arr[i];
           }
           return str2.trim();
       }
       
       public static String Q2(String str){
       String str2="";
       String[] arr = str.split("\\s");
       HashSet hs = new HashSet();
       for(int i= 0;i<arr.length;i++ ){
            if(!(hs.add(arr[i]))){
            hs.remove(arr[i]);
            }
           }
        for(Object ss:hs){
         str2 +=" "+(String)ss;
        }
       return str2;
       }   public static String Q3(String str){
       String str2="";
       String[] arr = str.split("\\s");
       for(int i=0;i<arr.length;i++){
       str2 += arr[i];
       }
       StringBuffer sb= new StringBuffer(str2);
       str2=sb.reverse().toString();
       return str2;
       }   public static void Q4(String str){
       char[] temp = str.toCharArray();
       HashMap hm = new HashMap();
       for(int i=0;i<temp.length;i++){
       
      if(!hm.containsKey(temp[i])){
      hm.put(temp[i], new Integer(1));
      }
      else{
      Integer in= (Integer)hm.get(temp[i])+1;
      hm.put(temp[i], in);
      }
       
       }
       Iterator it = hm.keySet().iterator();
       while(it.hasNext()){
       Object o=it.next();
       System.out.println("字符"+o.toString()+"的出现次数是"+hm.get(o));
       }
       }
    }