2013-05-20 81 views
0

我正在嘗試編寫一個代碼,該代碼使用掃描器輸入單詞列表,然後輸入單個字符串,然後輸入alphabetizer每個單詞。我所得到的只是字母順序的第一個字,我該如何解決這個問題?單字符串列表字母化

代碼:

else if(answer.equals("new")) 
    { 
     System.out.println("Enter words, separated by commas and spaces."); 
     String input= scanner.next(); 
     char[] words= input.toCharArray(); 
     Arrays.sort(words); 
     String sorted= new String(words); 
     System.out.println(sorted); 

    } 

結果: 「AHY」

回答

0

你在一個字符串通過scanner.next()讀,再破該字符串成字符。所以,正如你所說的那樣,它是通過input.toCharArray()按字符排序單個字符串的。你需要做的是讀入所有的單詞,並將它們添加到String []。所有單詞添加完後,請使用Arrays.sort(yourStringArray)對它們進行排序。請參閱評論以解答以下問題。

+0

那麼我將如何設置String []? – user2399999

+0

String [] words =(input1,input2,input3 ..)or? – user2399999

+0

是的,創建一個String []並將你的字符串添加到該字符串中。然後根據該數組進行排序。你可以簡單地通過做一些像'String [] ra = new String [10];'10是任意的。你可以像這樣添加:'ra [0] =「steve」; ra [1] =「hello」;'...如果您跟蹤自己的尺寸,則可以添加到陣列中的下一個打開的插槽。 –

0

您需要將字符串拆分爲單詞而不是字符。一種選擇是使用String.split。之後,您可以將這些單詞加入單個字符串:

System.out.println("Enter words, separated by commas and spaces."); 
String input = scanner.nextLine(); 

String[] words = input.split(",| "); 
Arrays.sort(words); 

StringBuilder sb = new StringBuilder(); 
sb.append(words[0]); 
for (int i = 1; i < words.length; i++) { 
    sb.append(" "); 
    sb.append(words[i]); 
} 
String sorted = sb.toString(); 

System.out.println(sorted); 

請注意,默認情況下,大寫字母在小寫之前排序。如果這是一個問題,請參閱this question

+0

有關這不是計算權利,它正在編譯,但沒有在最後打印出 – user2399999

+0

適合我的作品。也許你的周邊代碼有問題? [Here](http://pastebin.com/3Dze5if9)是一個獨立的示例,供您嘗試,以演示它的工作。 – Cairnarvon