Maison > Java > javaDidacticiel > Comment éviter les boucles infinies lors de la gestion d'InputMismatchException en Java ?

Comment éviter les boucles infinies lors de la gestion d'InputMismatchException en Java ?

DDD
Libérer: 2024-12-24 00:38:14
original
389 Les gens l'ont consulté

How to Prevent Infinite Loops When Handling InputMismatchException in Java?

Boucle infinie dans un bloc try/catch avec InputMismatchException : une solution

Votre programme Java rencontre une boucle infinie lors de la gestion d'une exception InputMismatchException dans un essai /catch bloc tout en prenant une entrée entière de l’utilisateur. Ce comportement vient du fait qu'après avoir intercepté l'InputMismatchException, le scanner reste dans un état invalide, entraînant la répétition de la boucle indéfiniment.

Pour résoudre ce problème, vous devez effectuer les opérations suivantes dans le bloc catch :

catch (InputMismatchException e) {
    System.out.println("Error!");
    input.next(); // Move to the next line to avoid the infinite loop
}
Copier après la connexion

La méthode input.next() fait avancer le pointeur du scanner vers la ligne suivante, éliminant ainsi toute entrée non valide qui a provoqué le exception.

Vous pouvez également utiliser la méthode hasNextInt() avant de tenter de lire un entier, garantissant ainsi que la valeur en cours de lecture est bien un entier. Cette approche élimine complètement le besoin de gestion des exceptions :

while (true) {
    if (input.hasNextInt()) {
        n1 = input.nextInt();
        break;
    } else {
        input.next(); // Skip non-numeric input
    }
}
Copier après la connexion

N'oubliez pas que la documentation de Java Scanner indique qu'après la levée d'une exception InputMismatchException, le scanner ne transmettra pas le jeton responsable de l'exception, ce qui nécessite sa récupération. ou contourné par d'autres moyens. La mise en œuvre de ces modifications devrait atténuer le problème de boucle infinie dans votre programme Java.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal