[英]Java prints “null” while taking in array of strings as input from the user using Scanner and ends abruptly
[英]Java Scanner, taking user input from console into array list as separate words
我试图将用户输入从控制台直接读取到一个数组列表中,并用在两侧具有空格的每个单词或实体分隔(默认行为)。 问题是我陷入了while循环中。 Scanner.next()一直在等待更多输入,尽管我知道我想在用户按return键后停止输入输入:
Scanner input = new Scanner(System.in);
System.out.print("Enter a sentence: ");
do {
if (words.add(input.next());
} while (input.hasNext());
System.out.println(words);
我输入了一行,除了我必须按CTRL-D来终止它(IE。表示输入结束)。 我只想在句子的末尾按回车符'\\ n'时自动结束它。
使用split可能更简单。
// read a line, split into words and add them to a collection.
words.addAll(Arrays.asList(input.nextLine().split("\\s+")));
您可以始终使用Console类,如下所示:
Console console = System.console();
System.out.print("Enter a sentence: ");
List<String> words = Arrays.asList(console.readLine().split("\\s+"));
System.out.println(words);
readline()方法应该处理\\ n问题。
如果您需要使用Scanner来读取类型,则可以混合使用两种类:
Scanner scanner = new Scanner(console.reader());
希望这可以帮助!
您可以调用input.hasNextLine和input.nextLine来获得一行,然后为所获得的行创建一个新的Scanner并使用现在的代码。 不是最便宜的解决方案,而是一种简单的实现方法,直到您提出更好的解决方案为止:-)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.