2016-09-29 20 views
-1

我使用Java開發一個小項目。使用Java'sstringbuilder的字符串反轉

我想要字符串反轉。 如果我輸入「我是女孩」,打印倒車...

我已經嘗試過使用StringBuilder。 此外,我寫使用它的StringBuffer語法...... 但我失敗了...... 它不打印我的願望......

WISH

我與打印 - >「我麻lrig」

「我是女孩」 - >「我是女孩」反過來!

我該怎麼辦?..

請幫我謝謝〜!

public String reverse() {   
    String[] words = str.split("\\s");  
    StringTokenizer stringTokenizer = new StringTokenizer(str, " "); 

    for (String string : words) { 
     System.out.print(string); 
    } 

    String a = Arrays.toString(words); 

    StringBuilder builder = new StringBuilder(a); 

    System.out.println(words[0]); 

    for (String st : words){ 
     System.out.print(st); 
    } 

    return "";  
} 
+0

http://stackoverflow.com/a/12305693/3145960 –

+0

OP不希望整個字符串被顛倒,她希望每個記號(以空格分隔)被顛倒。 – TheLostMind

+0

StringBuilder中已經有了一個reverse()方法。 https://docs.oracle.com/javase/7/docs/api/java/lang/StringBuilder.html#reverse() – sura2k

回答

4

的Java 8代碼來做到這一點:

public static void main(String[] args) { 
    String str = "I am a girl"; 
    StringBuilder sb = new StringBuilder(); 
    // split() returns an array of Strings, for each string, append it to a StringBuilder by adding a space. 
    Arrays.asList(str.split("\\s+")).stream().forEach(s -> { 
     sb.append(new StringBuilder(s).reverse() + " "); 
    }); 
    String reversed = sb.toString().trim(); // remove trailing space 
    System.out.println(reversed); 
} 

O/P:

I ma a lrig 
+0

謝謝!!!!!!所以...什麼是forEach(s - > {??????? –

+0

@한송송이 - 它叫做lambda表達式,你可以閱讀它們:) – TheLostMind

1

如果你不想去與lambda那麼你可以嘗試這種解決方案也

String str = "I am a girl"; 
     String finalString = ""; 
     String s[] = str.split(" "); 
     for (String st : s) { 
      finalString += new StringBuilder(st).reverse().append(" ").toString(); 
     } 
     System.out.println(finalString.trim()); 
    }