0

我正在尝试编写一个小程序来计算某些成绩,但我得到了一个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!");
        }
    }
}

如您所见,我无法为变量结果分配任何数字。

4

2 回答 2

1

inputMismatchException意味着Scanner( input) 收到的不是 int 的东西,这是预期的nextInt

由 Scanner 抛出以指示检索到的令牌与预期类型的​​模式不匹配,或者令牌超出预期类型的​​范围。

所以简而言之,你给扫描仪的下一个令牌不是 int。

于 2013-06-21T23:32:17.627 回答
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;
}
于 2013-06-21T23:35:54.613 回答