有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用一些简单的异常处理问题。Java中的hasNextInt()?

我正在为一个菜单创建一个数组列表,它对应于菜单上的一个数字。大部分内容被忽略了:我的主要问题是,当用户第一次没有输入整数值时,错误消息不会显示。按下enter键后,控制台上不会显示任何内容,但如果再次输入非整数的内容,它将正常工作并显示错误消息

编辑:我还需要注意的是,在前面的代码中,我使用了相同的scanner对象。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) 个答案

  1. # 1 楼答案

    hasNextInt检查下一个令牌,而不是刚刚收到的令牌,因此在调用^{之前总是调用hasNextXxx()

    您还需要实际获取整数值并将其分配给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();