我想做的是让用户输入很多数字,然后按Enter,然后将所有这些数字立即存储到堆栈中。我的想法是使用循环遍历所有数字并将其推入堆栈,如下所示:
Stack<Integer> mainBin = new Stack<Integer>();
Scanner scanner = new Scanner(System.in);
while (scanner.hasNextInt()) {
mainBin.push(scanner.nextInt());
}
但是,即使我多次按Enter键却没有输入任何新内容,它仍然停留在循环中。有什么建议么?
最佳答案
Scanner.hasNextInt()
跳过空格以查找下一个标记。因此,它会读取并跳过所有Enter键。然后它等待更多的输入,因为可能会有更多的输入。
在Linux终端中,您可以按Ctrl-D
(也许在OS X上为Cmd-D
)来发送文件结束标记,该标记告诉应用程序不再有输入(应在开始时完成)。线)。 This answer建议Ctrl-Z
在Windows的命令提示符下是等效的。
另外,您可能需要应用程序读取一些特殊的输入。 @phatfingers评论说,您可以指定要读取的值的数量作为第一个输入。您也可以使用一个特殊的值来表示结束(根据应用程序的需要,0或-1是常见选择),甚至可以使用诸如“ end”之类的非数字标记。