Try-Catch à l'intérieur de la Boucle While

Le code ci-dessous demande à l'utilisateur combien de coureurs qu'il/elle aimerait.

while (true) { //loops forever until break
    try { //checks code for exceptions
        System.out.println("How many racers should" + " participate in the race?");
        amountRacers = in.nextInt();
        break; //if no exceptions breaks out of loop
    } 
    catch (InputMismatchException e) { //if an exception appears prints message below
        System.err.println("Please enter a number! " + e.getMessage());
        continue; //continues to loop if exception is found
    }
}

Si un nombre est entré à amoutnRacers = in.nextInt(); le code des pauses hors de la boucle et le reste du programme s'exécute correctement; cependant, quand je rentre quelque chose comme "awredsf" il doit attraper cette exception, il n'. Au lieu de demander à l'utilisateur de nouveau il la boucle, ce qui pour moi n'a aucun sens.

Le programme imprime la boucle en continu:

Combien de coureurs doivent participer à la course?
Combien de coureurs doivent participer à la course?
Combien de coureurs doivent participer à la course?
Combien de coureurs doivent participer à la course?
Combien de coureurs doivent participer à la course?
Combien de coureurs doivent participer à la course?
Combien de coureurs doivent participer à la course?Veuillez entrer un nombre! null
Veuillez entrer un nombre! null
Veuillez entrer un nombre! null
Veuillez entrer un nombre! null
Veuillez entrer un nombre! null
Veuillez entrer un nombre! null
Veuillez entrer un nombre! null
...

Je ne comprends pas ce qui se passe sur amountRacers = in.nextInt(); alors pourquoi l'utilisateur ne peut pas entrer dans un certain nombre?

  • Fondamentalement, vous obtenez l'exception, encore et encore. C'est sans doute parce que l'erreur de saisie est toujours là en attente d'être lus.
InformationsquelleAutor Rhendz | 2014-07-21