我要做的是让用户输入大量数字然后按Enter键,然后立即将所有这些数字存储到堆栈中。我的想法是使用循环遍历所有数字并将它们推送到堆栈中,如下所示:
Stack<Integer> mainBin = new Stack<Integer>();
Scanner scanner = new Scanner(System.in);
while (scanner.hasNextInt()) {
mainBin.push(scanner.nextInt());
}
然而,即使在我输入多次而没有输入任何新内容之后,它仍然保持在循环中。有什么建议吗?
答案 0 :(得分:1)
Scanner.hasNextInt()
跳过空格以查找下一个标记。因此,它会读取并跳过所有Enter印刷机。然后等待更多输入,因为可能会有更多输入。
在Linux终端中,您可以按Ctrl-D
(OS X上可能为Cmd-D
?)发送文件结束标记,告诉应用程序没有更多输入(这应该在一行的开头完成)。 This answer表明Ctrl-Z
在Windows&#39;中是等价的。命令提示符。
或者,您可以获得应用程序读取的一些特殊输入。 @phatfingers评论说你可以指定要读取的值的数量作为第一个输入。您还可以使用特殊值来表示结束(根据应用程序的需要,0或-1是常见选项),或者甚至可以使用非数字标记,例如&#34; end&#34;。
答案 1 :(得分:0)
您的示例使用scanner.hasNext()
。请改用scanner.hasNextInt()
。