将一句话里的单词倒置,标点符号不到换,如 i come from xian。变成 xian。from come i
public class reverses { public static void main(String[] args) {
 String str="i come from xian.";
 StringBuffer aa=new StringBuffer("");
  String bb="";
 StringBuffer ss=new StringBuffer(str);
     String str1=ss.reverse().toString();
      char []a=str1.toCharArray();
       for(int i=0;i<a.length;i++){
        if(a[i]!=' '){
           aa=aa.append(a[i]);
          }
        else {
       System.out.println(aa);   
     aa=aa.reverse();
    
         bb=bb+aa+a[i];  
     aa=new StringBuffer("");  
           }
       }
       System.out.println(bb);       
}
}
为什么输出为xian。from come 打印不上最后一个单词。

解决方案 »

  1.   


    String str = "i come from xian.";
    StringBuffer aa = new StringBuffer("");
    String bb = "";
    StringBuffer ss = new StringBuffer(str);
    String str1 = ss.reverse().toString();
    char[] a = str1.toCharArray();
    for(int i = 0;i < a.length;i++){
    if(a[i] != ' '){
    aa.append(a[i]);
    }else{
    System.out.println(aa);
    aa.reverse();
    bb = bb + aa + a[i];
    aa = new StringBuffer("");
    }
    }
                    //i是a的最后一个元素,a[i] == ' '的情况不会出现,循环里else不会执行
                    //在循环外执行bb = bb + aa即可
    bb = bb + aa ;
    System.out.println(bb);
      

  2.   

    public class reverses {     public static void main(String[] args) { 
           String str="i come from xian."; 
           StringBuffer aa=new StringBuffer(""); 
           String bb=""; 
           StringBuffer ss=new StringBuffer(str); 
           String str1=ss.reverse().toString(); 
           char []a=str1.toCharArray(); 
           for(int i=0;i <a.length;i++){ 
              if(a[i]!=' '){ 
                 aa=aa.append(a[i]); 
              }else { 
                 System.out.println(aa);  
                 aa=aa.reverse(); 
                 bb=bb+aa+a[i];  
                 aa=new StringBuffer("");  
             } 
          } 
          System.out.println(bb+aa.reverse().toString());      
       } 
      

  3.   


          StringBuffer sb = new StringBuffer();
          String str="zi fu chuan dao zhi!";
          int i=0;
          int index=0;
          while(i<str.length())
          {
            if(str.charAt(i)==' ')
            {
               sb.insert(0,str.substring(index,i));
               sb.insert(0," ");
               i++;
               while(str.charAt(i)==' ' && i<str.length())
                  i++;
               index=i;
               sb.append(' ');
            }
            i++;
          }
          sb.insert(0,str.substring(index,i));
          System.out.println(sb.toString());我JDK是1.4的没charAt这个方法...所以没调试...LZ自己调试下...
      

  4.   


    String str = "i come from xian.";
            StringBuffer aa = new StringBuffer("");
            String bb = "";
            StringBuffer ss = new StringBuffer(str);
            String str1 = ss.reverse().toString();
            char[] a = str1.toCharArray();
            for(int i = 0;i < a.length;i++){
                if(a[i] != ' '){
                    aa.append(a[i]);//最后一次aa.append(a[i])的元素是i,楼主没有将这个aa加进去
                }else{
                    System.out.println(aa);
                    aa.reverse();
                    bb = bb + aa + a[i];
                    aa = new StringBuffer("");
                }
            }
             bb = bb + aa ;//加上这句就行了
            System.out.println(bb);
    运行结果:
    .naix
    morf
    emoc
    xian. from come i
      

  5.   

    import java.util.regex.Matcher;
    import java.util.regex.Pattern;public class Reverses { /**
     * @param args
     */
    public static void main(String[] args) {
    String str="i come from xian."; 
        String splitStr = "\\s+";
        System.out.println(reverse(str, splitStr));
    }

    /**
     * 将一句话里的单词倒置
     * @param str 要倒置的字符串
     * @param splitStr 分割字符串
     * @return 倒置后的字符串
     */
    public static String reverse(String str, String splitStr) {
    String[] arrStr = str.split(splitStr);
        String resultStr = "";
        for (int i = arrStr.length - 1; i >= 0 ; i--) {
         resultStr += arrStr[i] + " ";
        }
    return resultStr.substring(0, resultStr.length() - 1);
    }
    }
      

  6.   


    import java.util.regex.Matcher;
    import java.util.regex.Pattern;public class Reverses { /**
     * @param args
     */
    public static void main(String[] args) {
    String str="i come from xian."; 
        String splitStr = "\\s+";
        System.out.println(reverse(str, splitStr));
    }

    /**
     * 将一句话里的单词倒置
     * @param str 要倒置的字符串
     * @param splitStr 分割字符串
     * @return 倒置后的字符串
     */
    public static String reverse(String str, String splitStr) {
    String[] arrStr = str.split(splitStr);
        String resultStr = "";
        for (int i = arrStr.length - 1; i >= 0 ; i--) {
         resultStr += arrStr[i] + " ";
        }
    return resultStr.substring(0, resultStr.length() - 1);
    }
    }