我正在为与菜单上的数字相对应的食品菜单创建一个数组列表。其中大部分内容被遗漏:我的主要问题是,用户第一次不输入整数值时不会显示错误消息。按 Enter 键后,控制台上不会显示任何内容,但如果我再次输入非整数的内容,它将正常工作并显示错误消息。
编辑:我应该注意的其他事情是,在代码的前面,我使用相同的扫描仪对象,因此使用 .next() 清除它之前的值。
orderArray = new String[length];
menuDisplay();
int item; //the item number that user must enter
for(int i=1; i<=length;i++)
{
System.out.println("Please choose item #"+ i+": ");
scan.next();
while(!scan.hasNextInt()) //this while loop checks that an integer value has been entered
{
System.out.println("Please enter an integer value from the above menu.");
scan.next();
}
}
最佳答案
hasNextInt
检查下一个 token ,而不是刚刚收到的 token ,因此始终在之前调用hasNextXxx()
> 调用nextXxx()
。
您还希望实际获取整数值并将其分配给 item
。
像这样重新排列你的代码:
System.out.println("Please choose item #"+ i+": ");
while (!scan.hasNextInt()) //this while loop checks that an integer value has been entered
{
System.out.println("Please enter an integer value from the above menu.");
scan.next(); // skip bad token
}
item = scan.nextInt();
关于java - 在 Java 中使用 .hasNextInt() 进行一些简单的异常处理有问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56402853/