Java: Endlosschleife mit Scanner in.hasNextInt ()

Ich benutze den folgenden Code:

while (invalidInput)
{
    // ask the user to specify a number to update the times by
    System.out.print("Specify an integer between 0 and 5: ");

    if (in.hasNextInt())
    {
        // get the update value
        updateValue = in.nextInt();

        // check to see if it was within range
        if (updateValue >= 0 && updateValue <= 5) 
        { 
            invalidInput = false; 
        } 
        else 
        {
            System.out.println("You have not entered a number between 0 and 5. Try again.");
        }
    } else
    {
        System.out.println("You have entered an invalid input. Try again.");
    }
}

Wenn ich jedoch ein 'w' eingebe, wird mir mitgeteilt, dass Sie eine ungültige Eingabe eingegeben haben. Versuchen Sie es erneut. und dann geht es in eine Endlosschleife mit dem Text "Geben Sie eine Ganzzahl zwischen 0 und 5 an: Sie haben eine ungültige Eingabe eingegeben. Versuchen Sie es erneut."

Warum passiert dies? Soll das Programm nicht jedes Mal warten, bis der Benutzer etwas eingibt und die Eingabetaste drückt, wenn es die folgende Anweisung erreicht:

if (in.hasNextInt())

Antworten auf die Frage(4)

Ihre Antwort auf die Frage