java.util.inputMismatchException不知道为什么

时间:2013-06-21 23:30:07

标签: java

我正在尝试编写一个小程序来计算某些成绩,但我得到的是inputMismatchException,但我不知道为什么。问题是我在有机会输入整数之前得到了异常。

有人可以帮我解决。

    public static void main(String[] args) 
    {
        Scanner input = new Scanner("System.in");

        int passes = 0;
        int failures = 0;
        int studentCounter = 1;
        int result;

        while(studentCounter <= 10)
        {
            //Zelf aangepast = output gewijzigd
            System.out.println("Geef het resultaat in (1 = geslaagd, 2 = gebuisd).");
            result = input.nextInt();

            if(result == 1)
            {
                passes = passes + 1;
            }
            else
            {
                failures = failures + 1;
            }

            studentCounter = studentCounter + 1;
        }

        //Zelf aangepast = output gewijzigd
        System.out.printf("Aantal leerlingen geslaagd: %d\nAantal leerlingen gebuisd: %d\n", passes, failures);

        if(passes > 8)
        {
            //Zelf aangepast = output gewijzigd
            System.out.println("Bonus voor de leerkracht!");
        }
    }
}

因此,您可以看到我无法为变量结果分配任何数字。

2 个答案:

答案 0 :(得分:1)

inputMismatchException表示Scannerinput)收到的内容不是nextInt预期的int:

  

由扫描程序抛出,表示检索到的令牌与预期类型的​​模式不匹配,或者令牌超出预期类型的​​范围。

简而言之,您为扫描仪提供的下一个标记不是int。

答案 1 :(得分:0)

当用户在调用Scanner.nextInt()时未输入有效整数时会发生这种情况。要解决这个问题,你可以使用如下例外:

while(studentCounter <= 10)
{
    //Zelf aangepast = output gewijzigd
    System.out.println("Geef het resultaat in (1 = geslaagd, 2 = gebuisd).");
    try {
        result = input.nextInt();
    }
    catch(InputMismatchException i) {
        System.out.println("Please enter integers only.");
        result = 0;
    }

    if(result == 1)
    {
        passes = passes + 1;
    }
    else
    {
        failures = failures + 1;
    }

    studentCounter = studentCounter + 1;
}