Valider la saisie de l’utilisateur
Gérer élégamment les saisies invalides
Valider la saisie de l’utilisateur est une leçon Java Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Java Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Java Academy comprend 4 leçons au total.
Ne faites jamais confiance aux entrées
Les utilisateurs saisissent parfois des valeurs incorrectes : des lettres à la place de nombres, des champs vides ou des valeurs hors limites. Les programmes robustes valident les entrées et redemandent une valeur au lieu de se terminer avec une erreur.
Cette leçon présente des approches de validation élégantes avec Scanner.
Vérifier avant de lire
La protection la plus simple est hasNextInt(). Ne lisez l'entier que lorsqu'il est effectivement disponible.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("42");
if (scanner.hasNextInt()) {
System.out.println("Got: " + scanner.nextInt());
} else {
System.out.println("Please enter a number");
}
scanner.close();
}
}Répéter jusqu'à obtenir une valeur valide
Une boucle de nouvelle tentative redemande une valeur jusqu'à ce qu'un entier valide soit fourni. Lorsque le jeton est incorrect, supprimez-le avec next(), puis continuez.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("abc xyz 50");
int value = -1;
while (scanner.hasNext()) {
if (scanner.hasNextInt()) {
value = scanner.nextInt();
break;
}
scanner.next();
}
System.out.println("Accepted: " + value);
scanner.close();
}
}Vérifier les limites
Au-delà du type, les valeurs doivent souvent se trouver dans une plage donnée. Lisez le nombre, puis vérifiez-le avant de l'accepter.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("7");
int n = scanner.nextInt();
if (n >= 1 && n <= 10) {
System.out.println("Valid: " + n);
} else {
System.out.println("Out of range");
}
scanner.close();
}
}Try-Catch lors de l'analyse
Une autre approche consiste à lire une ligne entière, puis à l'analyser en interceptant NumberFormatException pour les textes invalides. Le tampon reste ainsi simple.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("notanumber");
String line = scanner.nextLine();
try {
int n = Integer.parseInt(line.trim());
System.out.println("Parsed: " + n);
} catch (NumberFormatException e) {
System.out.println("Invalid number: " + line);
}
scanner.close();
}
}Valider un texte non vide
Pour les entrées textuelles, refusez les champs vides. isBlank() renvoie true pour les chaînes vides ou composées uniquement d'espaces.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(" ");
String name = scanner.nextLine();
if (name.isBlank()) {
System.out.println("Name cannot be empty");
} else {
System.out.println("Hello, " + name);
}
scanner.close();
}
}Valider un choix
Pour les choix d'un menu, vérifiez que la valeur fait partie des options autorisées avant de l'utiliser.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("y");
String choice = scanner.next().toLowerCase();
if (choice.equals("y") || choice.equals("n")) {
System.out.println("You chose: " + choice);
} else {
System.out.println("Please enter y or n");
}
scanner.close();
}
}Une méthode de validation réutilisable
Extrayez la validation dans une méthode afin de réutiliser la logique. Ici, une méthode vérifie qu'un âge se trouve dans une plage raisonnable.
public class Main {
static boolean isValidAge(int age) {
return age >= 0 && age <= 120;
}
public static void main(String[] args) {
System.out.println(isValidAge(30));
System.out.println(isValidAge(-5));
}
}Combiner le type et les limites
En pratique, la validation combine souvent une vérification du type, une vérification des limites et une boucle de nouvelle tentative au sein d'une seule routine robuste.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("abc 200 45");
int valid = -1;
while (scanner.hasNext()) {
if (scanner.hasNextInt()) {
int n = scanner.nextInt();
if (n >= 1 && n <= 100) {
valid = n;
break;
}
} else {
scanner.next();
}
}
System.out.println("Final: " + valid);
scanner.close();
}
}Des messages d'erreur clairs
Une bonne validation fournit également des informations utiles à l'utilisateur. Expliquez précisément ce qui était incorrect et ce qui est attendu, plutôt que d'afficher un échec générique.
public class Main {
static String validate(String input) {
if (input.isBlank()) return "Input is empty";
if (!input.matches("\\d+")) return "Only digits allowed";
return "OK";
}
public static void main(String[] args) {
System.out.println(validate(""));
System.out.println(validate("12a"));
System.out.println(validate("123"));
}
}Stratégie de validation
Vérifiez le type avec la famille hasNext ou avec try-catch, vérifiez les limites et l'absence de contenu, répétez jusqu'à obtenir une valeur valide et expliquez toujours clairement les erreurs.
Vérification rapide
Vérifiez vos connaissances sur la validation des entrées.
Récapitulatif
Vous avez appris à valider les entrées avec élégance :
- Protégez vos lectures avec
hasNextIntou analysez les valeurs dans un try-catch - Utilisez des boucles de nouvelle tentative et supprimez les jetons incorrects avec
next() - Vérifiez les limites et refusez les textes vides avec
isBlank - Extrayez des méthodes de validation réutilisables
- Fournissez des messages d'erreur clairs et précis
Apprends Java avec un tuteur IA — gratuit
Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.
- Cours
- 104
- Leçons
- 374
Questions Fréquemment Posées
La leçon « Valider la saisie de l’utilisateur » est-elle gratuite ?
Oui — le texte complet de « Valider la saisie de l’utilisateur » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Java Academy, passe à CoddyKit PRO. Le cours Java Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Valider la saisie de l’utilisateur » ?
Gérer élégamment les saisies invalides Tu pratiques Java Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Java Academy ?
Aucune expérience préalable n'est requise. Java Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.
Combien de temps prend la leçon « Valider la saisie de l’utilisateur » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Java Academy ?
Oui. Chaque leçon Java Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Lire la saisie avec Scanner
- Lire des nombres et des lignes
- Valider la saisie de l’utilisateur
- Alternative à BufferedReader