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

我正在为与菜单上的数字相对应的食品菜单创建数组列表。其中大部分被遗漏了:我的主要问题是错误消息不会在用户第一次不输入整数值时显示。按下回车键后控制台上不会显示任何内容,但如果我再次输入不是整数的内容,它将正常工作并显示错误消息。


编辑:还有一点我应该注意的是,在代码的前面我使用了相同的扫描仪对象,所以使用 .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();

            }


        }


HUX布斯
浏览 138回答 1
1回答

繁星淼淼

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{&nbsp; &nbsp; System.out.println("Please enter an integer value from the above menu.");&nbsp; &nbsp; scan.next(); // skip bad token}item = scan.nextInt();
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java