java - 循环用户输入直到输入一个正的非零整数
问题描述
我是一个完整的初学者,我正在尝试创建一个 while 循环,不断询问用户输入,直到它得到一个正的非零整数,然后继续下一部分。这是我到目前为止所得到的:
System.out.println("Enter the speed of the vehicle in "
+ "miles per hour: ");
while (keyboard.hasNext())
{
if (keyboard.hasNextInt())
{
speed = keyboard.nextInt();
while (speed <= 0)
{
System.out.println("Please enter a positive nonzero number: ");
speed = keyboard.nextInt();
}
}
else
{
System.out.println("Please enter a number: ");
speed = keyboard.nextInt();
}
}
现在,当我运行它并输入除整数以外的任何内容时,它会打印出“请输入一个数字”这一行,但随后我立即收到 InputMatchException 错误并且构建失败。如果我输入一个负数或零,它会提示我输入一个正数,直到我输入一个正数,但随后代码会停止执行并继续运行,同时无限期地什么都不做,而不是转到循环之后的部分,这只是从另一个系统开始。输出。提前感谢您的帮助。
解决方案
您需要使用之前输入的非int
,然后尝试读取以下输入:
else
{
System.out.println("Please enter a number: ");
// consume and ignore the previous non-int input
keyboard.next();
}
推荐阅读
- python - Omron Sysmac - 将十六进制转换为有符号浮点十进制
- python - 在循环中更改变量?
- javascript - 将 HTMLElement 附加到内联元素的中间
- c# - RemoveRange 上的 DbUpdate 异常
- ios - 进入后台时停止应用程序刷新。(iOS)
- statistics - 不同样本量的不同组的统计参数比较
- json - 使用 JQuery 解析 JSON Bing 搜索 API
- python - 尝试在 Python 中进行单元测试时出现“ModuleNotFoundError: No module named ...”
- azure-functions - Azure 函数 .net 5 隔离 blob 输出绑定
- python - 我试图将我的 Python Web 应用程序部署到 Microsoft Azure,但它失败了,我在 Github 上收到了这个错误