由于错误处理不当,导致 Java 中出现无限循环。我该如何解决这个问题?
这是我的循环。如果输入非整数,则会无限重复。从我所看到的来看,下一次循环运行时似乎没有清除异常。或者因为它接受先前的输入并将其分配给 menuChoice。我该如何解决这个问题?
while(!console.hasNextInt())
{
try {
menuChoice = console.nextInt();
} catch(InputMismatchException e) {
System.out.println("The selection you made is invalid.");
}
}
This is my loop. It repeats endlessly if a non-int is entered. From what I can see, it seems like the exception isn't cleared on the next run of the loop. Or because it takes the previous input and assigns it to menuChoice. How can I fix this?
while(!console.hasNextInt())
{
try {
menuChoice = console.nextInt();
} catch(InputMismatchException e) {
System.out.println("The selection you made is invalid.");
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
不要在 while 循环中检查 int,而是检查任何输入标记:
don't check for an int in the while loop, check for any input token:
这可能会更快,因为
hasNextInt()
和nextInt()
都尝试将下一个标记解析为 int。在此解决方案中,解析仅完成一次:this might be faster because
hasNextInt()
andnextInt()
both try to parse the next token to an int. In this solution the parse is only done once: