Maison >Java >javaDidacticiel >Comment gérer gracieusement les entrées entières invalides avec le scanner Java ?

Comment gérer gracieusement les entrées entières invalides avec le scanner Java ?

DDD
DDDoriginal
2024-12-18 07:07:10237parcourir

How to Gracefully Handle Invalid Integer Input with Java's Scanner?

Comment gérer les entrées non valides à l'aide du scanner

Lors de l'utilisation du scanner pour les entrées utilisateur, la gestion des entrées non valides, telles que les caractères non numériques, est crucial pour la robustesse du programme. Explorons une solution pour résoudre ce problème.

Considérez l'extrait de code suivant :

Scanner kb = new Scanner(System.in);
int num1;
int num2 = 0;

System.out.print("Enter number 1: ");
num1 = kb.nextInt();

while (num2 < num1) {
    System.out.print("Enter number 2: ");
    num2 = kb.nextInt();
}

Ce code vise à obtenir deux entiers de l'utilisateur, en garantissant que le deuxième nombre (num2) est supérieur au premier (num1). Cependant, il présente deux limitations :

  1. Il ne vérifie pas les entrées non numériques, ce qui provoque le blocage du programme si l'utilisateur saisit un caractère au lieu d'un nombre.
  2. Le la boucle continue même après la saisie d'une entrée valide pour num2 car la condition while est toujours vraie.

Pour résoudre ces problèmes, nous pouvons exploiter la Scanner.hasNextInt(), qui détermine si le jeton suivant dans l'entrée peut être interprété comme un entier.

L'extrait de code suivant intègre ces améliorations :

Scanner sc = new Scanner(System.in);
System.out.print("Enter number 1: ");
while (!sc.hasNextInt()) sc.next();
int num1 = sc.nextInt();
int num2;
System.out.print("Enter number 2: ");
do {
    while (!sc.hasNextInt()) sc.next();
    num2 = sc.nextInt();
} while (num2 < num1);
System.out.println(num1 + " " + num2);

En vérifiant la validité saisie en utilisant hasNextInt() et en ignorant les caractères non valides, le programme gère les entrées non numériques avec élégance. De plus, la boucle do-while garantit que le deuxième nombre est supérieur au premier, empêchant la boucle de continuer après l'obtention d'une entrée valide.

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