在Java中使用.hasNextInt()进行一些简单异常处理的问题?

时间:2019-05-31 23:59:13

标签: java exception

我正在为食品菜单创建一个数组列表,该列表与菜单上的数字相对应。大部分遗漏了:我的主要问题是用户未输入整数值时第一次不显示错误消息。按Enter键后,控制台上什么都不会显示,但是如果我再次输入非整数的内容,它将按应有的方式工作并显示错误消息。

编辑:我还要注意的一点是,在代码的前面,我使用了相同的扫描器对象,因此请使用.next()清除其先前的值。

00000001

1 个答案:

答案 0 :(得分:1)

hasNextInt检查 next 令牌,而不是刚刚收到的令牌,因此请始终在调用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();