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

( ) が int 以外の何かを受け取ったことinputMismatchExceptionを意味します。ScannerinputnextInt

取得したトークンが予想される型のパターンと一致しないこと、またはトークンが予想される型の範囲外であることを示すために 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 に答える