0

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

编码:

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 ”

4

2 回答 2

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);

请注意,默认情况下,大写字母排在小写之前。如果这是一个问题,请参阅这个问题

于 2013-05-20T02:00:38.377 回答
0

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

于 2013-05-20T01:54:17.833 回答