我正在尝试让用户输入单词或短语,并按字母顺序将字符放入列表并对列表进行排序。这是我的代码:
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class SortAlphabetically {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
List<Character> alpha = new ArrayList<Character>();
System.out.println("Enter a word or phrase");
StringBuilder input = new StringBuilder(scanner.next());
scanner.close();
for (int i = 0; i < input.length(); i++) {
if (Character.isWhitespace(input.charAt(i))) {
input.deleteCharAt(i);
} else {
alpha.add(input.charAt(i));
}
}
alpha.sort(null);
System.out.println("Input sorted alphabetically: " + alpha);
}
}
但是,输入似乎在空白字符后停止输入列表。例如:
Enter a word or phrase
cba fed
Input sorted alphabetically: [a, b, c]
我尝试用
解决这个问题 if (Character.isWhitespace(input.charAt(i))) {
input.deleteCharAt(i);
}
但它似乎没有做任何事情
答案 0 :(得分:3)
scanner.next()
读取单个令牌,因此它会在第一个空格处停止。
如果您使用scanner.nextLine()
,它将读取整行,包括空格。
答案 1 :(得分:1)
您必须使用scanner.nextLine()
来获取包含所有空格的整行。
此外,您还可以使用简单的Java库函数在一行中更好地实现解决方案在java.lang.String
。为什么要废线!
System.out.println("Answer"+input.replaceAll( " ", "" ).toCharArray().toList().sort());