单字符串列表 - 字母顺序

时间:2013-05-20 01:48:28

标签: java string sorting alphabetical

我正在尝试编写一个代码,该代码使用扫描仪输入单词列表,所有这些都在一个字符串中,然后按字母顺序排列每个单词。我得到的只是字母按字母顺序排列的第一个单词,我该如何解决这个问题?

代码:

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”

2 个答案:

答案 0 :(得分:0)

您正在通过scanner.next()读取字符串,然后将该字符串分解为字符。所以,正如你所说,它是通过input.toCharArray()按字符对单字符串进行排序。您需要做的是阅读所有单词并将其添加到String []。添加完所有单词后,使用Arrays.sort(yourStringArray)对其进行排序。请参阅评论以获取以下问题的答案。

答案 1 :(得分: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