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
Patricia Arquetteoriginal
2024-12-11 17:08:18285parcourir

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
}

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
}

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!

Déclaration:
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