Validation d'entrée en Java

Rashmi Patidar 12 octobre 2023
Validation d'entrée en Java

La validation est le processus de vérification des entrées utilisateur ou des valeurs de la base de données par rapport à des contraintes spécifiques. La validation est appliquée pour réduire le temps pris par le programme pour exécuter la logique métier réelle, puis pour trouver des problèmes dans les entrées de l’utilisateur. Le processus augmente les performances et entraîne donc d’autres sessions de débogage en cas d’échec.

En code Java, nous prenons les entrées de l’utilisateur à l’aide de la classe Scanner. Il existe différentes méthodes de la classe Scanner qui aident à la validation du contenu d’entrée.

Vous trouverez ci-dessous le bloc de code qui explique les méthodes.

import java.util.Scanner;

public class InputValidation {
  public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    System.out.println("Enter any text: ");
    while (!scanner.hasNext("quit")) {
      System.out.println(scanner.hasNextInt() ? "The Input text is int: " + scanner.nextInt()
              : scanner.hasNextLong()         ? "The Input text is long: " + scanner.nextLong()
              : scanner.hasNextDouble()       ? "The Input text is double: " + scanner.nextDouble()
              : scanner.hasNextBoolean() ? "The Input text is boolean: " + scanner.nextBoolean()
                                         : "The Input text is String: " + scanner.next());
    }
  }
}

Dans le bloc de code ci-dessus, une instance de la classe Scanner est créée. Le constructeur appelle à l’aide d’un nouveau mot-clé prend un paramètre Input Stream, disons System.in.

Maintenant, le travail réel sur l’instance du scanner commence. Tout d’abord, dans la condition while, une vérification est appliquée pour donner une condition de terminaison. L’expression utilise la méthode hasNext de la classe Scanner. La méthode prend un modèle pour correspondre au jeton d’entrée. Et vérifie si l’entrée est autre chose que le texte quit. La méthode hasNext lève IllegalStateException lorsque l’objet scanner est fermé.

Désormais, lorsque le bloc est initié, l’entrée est validée à l’aide de la méthode hasNextInt. Il ne retourne vrai que si le texte saisi est une valeur int. Le texte saisi est scanné à partir de la console comme un int en utilisant la méthode nextInt et imprimé sur la console. La méthode nextInt() lève InputMismatchException lorsque le texte ne correspond pas à l’Integer Regex, IllegalStateException lorsque l’instance du scanner est fermée.

Maintenant, l’ensemble de ce bloc de contrôle est écrit dans des instructions ternaires imbriquées. Si la première condition est évaluée comme étant fausse, alors un autre contrôle est appliqué. La méthode hasNextDouble interprète le texte comme double et renvoie true si elle correspond. La méthode nextDouble() renvoie une valeur double à partir de la sortie standard et l’imprime dans la console sinon se déplace pour la prochaine vérification. La méthode nextDouble() lève InputMismatchException lorsque le jeton suivant de la console ne correspond pas à la Float Regex, IllegalStateException lorsque l’instance du scanner est fermée.

Une autre vérification consiste à utiliser la méthode hasNextBoolean. Cette méthode vérifie la valeur booléenne, vraie ou fausse. Si la valeur renvoyée est boolean true, l’utilisation de nextBoolean() est faite pour prendre l’entrée de la console et l’imprimer sur l’écran de sortie. Sinon, il passe à la section else des opérateurs ternaires. La méthode nextBoolean lève InputMismatchException lorsque le jeton suivant ne trouve pas de valeur booléenne, IllegalStateException lorsque l’instance du scanner est fermée.

Suivant le même schéma, l’entrée est validée à l’aide de la méthode next. La méthode devient la dernière condition de la section de vérification d’entrée while. La méthode recherche et renvoie l’intégralité du texte en amont de la console. La fonction peut bloquer la sortie console en attendant l’entrée à scanner. La méthode renvoie toujours une valeur String. L’évaluation traite également les caractères spéciaux comme des chaînes et imprime dans la sortie. La même exception est levée que les autres méthodes. Dites IllegalStateException si le scanner est fermé ou NoSuchElementException lorsqu’il n’y a plus de jetons disponibles.

Vous trouverez ci-dessous le bloc de sortie pour le code de validation ci-dessus.

Enter any text: 
--
The input text is String: --
67
The input text is int: 67
1234567890000000
The input text is long: 1234567890000000
true
The input text is boolean: true
FALSE
The input text is boolean: false
90.08939782639
The input text is double: 90.08939782639
hi
The input text is String: hi
quit
Rashmi Patidar avatar Rashmi Patidar avatar

Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.

LinkedIn

Article connexe - Java Input