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.
Vous devez vous connecter pour publier un commentaire.
Juste ajouter
input.next()
une fois que vous attraper InputMismatchException.Vous devez effacer la mauvaise entrée, qui scanner automatiquement non.
continue
nécessaire? est-ce juste un caprice de java?Vous pouvez avoir besoin de créer une classe Scanner pour obtenir l'entrée standard diffusés à partir du clavier. Vous devriez avoir une déclaration quelque part dans votre code qui crée une instance d'un Scanner de classe comme:
Scanner in = new Scanner(System.in);
de sorte que le " en " variable dans votre déclaration: amountRacers = en.nextInt(); attend et analyse les entrées à partir du clavier et la stocke.
Aujourd'hui, j'ai résolu ce problème 🙂 C'est mon code. Je pense que je les aide