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