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
Libérer: 2024-12-18 07:07:10
original
239 Les gens l'ont consulté

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();
}
Copier après la connexion

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);
Copier après la connexion

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!

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