gpt4 book ai didi

Java Scanner hasNextInt() 导致无限循环

转载 作者:行者123 更新时间:2023-12-01 10:57:27 25 4
gpt4 key购买 nike

我想做的是让用户输入很多数字,然后按回车键,然后将所有这些数字一次存储到堆栈中。我的想法是使用循环来遍历所有数字并将它们压入堆栈,如下所示:

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”。

关于Java Scanner hasNextInt() 导致无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33556366/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com