Maison > Java > javaDidacticiel > Comment éviter les boucles infinies lors de la gestion d'une entrée entière non valide avec le scanner Java ?

Comment éviter les boucles infinies lors de la gestion d'une entrée entière non valide avec le scanner Java ?

Patricia Arquette
Libérer: 2024-12-11 17:08:18
original
326 Les gens l'ont consulté

How to Prevent Infinite Loops When Handling Invalid Integer Input with Java's Scanner?

essayez/catch avec un problème de boucle InputMismatchException

Lorsque vous essayez de gérer les entrées utilisateur avec un bloc try/catch et une exception InputMismatchException, vous pouvez rencontrer une boucle infinie si l'entrée n'est pas un entier. Pour résoudre ce problème, assurez-vous d'appeler next() pour faire avancer le scanner au-delà de l'entrée non valide.

catch (Exception e) {
    System.out.println("Error!");
    input.next(); // Advance past invalid input
}
Copier après la connexion

De plus, il est conseillé d'utiliser hasNextInt() pour vérifier une entrée entière valide avant de la lire.

while (bError) {
    if (scanner.hasNextInt())
        n1 = scanner.nextInt();
    else {
        scanner.next(); // Advance past invalid input
        continue;
    }
    // Repeat for n2
}
Copier après la connexion

Cette approche garantit que le scanner ignore les entrées non entières et ne traite que les valeurs valides, éliminant ainsi le besoin de gestion des exceptions.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal