Java: endlos-Schleife mit Scanner.hasNextInt()

Ich bin mit dem 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.");
    }
}

Allerdings, wenn ich geben Sie ein " w " wird es mir sagen, "Sie haben eingegeben ungültige Eingabe. Versuchen Sie es Erneut." und dann geht es in eine Endlosschleife mit dem text "Geben Sie eine Zahl zwischen 0 und 5 ein: Sie haben eingegeben, die eine ungültige Eingabe. Versuchen Sie es erneut."

Warum ist das passiert? Nicht das Programm soll warten, bis der Benutzer die Eingabe und drücken Sie die EINGABETASTE jedes mal, wenn es reicht die Aussage:

if (in.hasNextInt())
Da Sie noch nicht gezeigt jemand was in ist, oder wie Sie gebaut, es gibt keine zu sagen, wie er sich Verhalten sollte!

InformationsquelleAutor Tomek | 2009-11-25

Schreibe einen Kommentar