为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

HUX布斯 2022-12-28 10:51:38
我正在为与菜单上的数字相对应的食品菜单创建数组列表。其中大部分被遗漏了:我的主要问题是错误消息不会在用户第一次不输入整数值时显示。按下回车键后控制台上不会显示任何内容,但如果我再次输入不是整数的内容,它将正常工作并显示错误消息。编辑:还有一点我应该注意的是,在代码的前面我使用了相同的扫描仪对象,所以使用 .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();            }        }
查看完整描述

1 回答

?
繁星淼淼

TA贡献1775条经验 获得超11个赞

hasNextInt检查下一个令牌,而不是刚刚收到的令牌,所以总是在调用之前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();


查看完整回答
反对 回复 2022-12-28
  • 1 回答
  • 0 关注
  • 137 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号