2013-05-20 82 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