Continuer une boucle while après d'exception
j'ai ce bout de code. Je voulais revenir au début de la boucle et de demander la saisie de l'utilisateur de nouveau. Cependant, il a toujours des boucles sans s'arrêter pour demander pour l'entrée. Quel est le problème avec mon code? grâce
while(true){
...
try {
int choice = input.nextInt(); <<---=- this should stop and ask for input, but it always loops without stopping.
} catch (InputMismatchException e){
<< I want to return to the beginning of loop here >>
}
}
- post le tout en boucle de code.
- Est-il lever une exception, par hasard?
- Pouvez-vous ajouter
continue
dans le bloc catch?
Vous devez vous connecter pour publier un commentaire.
De http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#nextInt%28int%29 :
"Si la traduction est réussie, le scanner avances passé l'entrée correspondant."
Ah, mais que faire si la traduction est pas succès? Dans ce cas, le scanner ne permet pas d'avancer au-delà de l'entrée. Les mauvaises données d'entrée reste que la prochaine chose à analyser, de sorte que la prochaine itération de la boucle échouera tout comme la précédente--la boucle va continuer d'essayer de lire la même mauvaise saisie de plus de et plus.
Pour éviter une boucle infinie, vous avez à passer la mauvaise données de sorte que vous pouvez obtenir en quelque chose de le scanner permet de lire un nombre entier. L'extrait de code ci-dessous ne présente en appelant d'entrée.next():
Vous n'avez pas posté de rien demander pour l'entrée,
Cela fonctionne bien:
Essayer de faire la boucle do while.
Cela devrait lancer et à attraper l'exception et la
continue
commande doit vous renvoyer dans votrewhile loop
. vous avez besoin d'un poursuivre ou d'unflag
de dire à votre tandis que lorsqu'il cesse d'êtretrue
.Mettre un séparateur de ligne dans votre
catch
bloc.