3 façons de lire les entrées de l’utilisateur dans la console en Java
Dans cet article, nous abordons trois façons différentes de lire les entrées de l’utilisateur dans l’environnement de la ligne de commande (également connu sous le nom de » console « ). Chaque façon est assez facile à utiliser et présente également ses propres avantages et inconvénients.
Lecture de l’entrée de l’utilisateur en utilisant la classe BufferedReader
En enveloppant le System.in (flux d’entrée standard) dans un InputStreamReader qui est enveloppé dans un BufferedReader, nous pouvons lire l’entrée de l’utilisateur dans la ligne de commande. Voici un exemple:
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));System.out.print("Enter your name: ");String name = reader.readLine();System.out.println("Your name is: " + name);
Dans l’exemple ci-dessus, la méthode readLine() lit une ligne de texte à partir de la ligne de commande.Advantages : L’entrée est mise en mémoire tampon pour une lecture efficace.Inconvénients : Le code d’habillage est difficile à mémoriser.
Lecture de l’entrée de l’utilisateur à l’aide de la classe Scanner
L’objectif principal de la classe Scanner (disponible depuis Java 1.5) est d’analyser les types primitifs et les chaînes de caractères à l’aide d’expressions régulières, cependant elle peut également être utilisée pour lire l’entrée de l’utilisateur dans la ligne de commande. Voici un exemple:
Scanner scanner = new Scanner(System.in);System.out.print("Enter your nationality: ");String nationality = scanner.nextLine();System.out.print("Enter your age: ");int age = scanner.nextInt();
Avantages:
- Méthodes pratiques pour analyser les primitives (nextInt(), nextFloat(), …) à partir de l’entrée tokenisée.
- Des expressions régulières peuvent être utilisées pour trouver des tokens.
Inconvénients:
- Les méthodes de lecture ne sont pas synchronisées.
En savoir plus : Tutoriel et exemples de code du scanner Java
La lecture de l’entrée de l’utilisateur à l’aide de la classe Console
La classe Console a été introduite dans Java 1.6, et elle est devenue un moyen privilégié pour lire l’entrée de l’utilisateur à partir de la ligne de commande. En outre, elle peut être utilisée pour lire les entrées de type mot de passe sans faire écho aux caractères saisis par l’utilisateur ; la syntaxe de la chaîne de format peut également être utilisée (comme System.out.printf()). Voici un extrait de code d’exemple:
Console console = System.console();if (console == null) {System.out.println("No console: non-interactive mode!");System.exit(0);}System.out.print("Enter your username: ");String username = console.readLine();System.out.print("Enter your password: ");char password = console.readPassword();String passport = console.readLine("Enter your %d (th) passport number: ", 2);
Avantages:
- Lecture du mot de passe sans écho des caractères saisis.
- Les méthodes de lecture sont synchronisées.
- La syntaxe de la chaîne de format peut être utilisée.
Inconvénients:
- Ne fonctionne pas dans un environnement non interactif (comme dans un IDE).
En savoir plus : Exemples de sortie d’entrée de console Java
Programme d’exemple de lecture de l’entrée de l’utilisateur en Java
Pour votre commodité et à des fins de référence, nous combinons l’extrait de code ci-dessus dans un programme de démonstration dont le code source ressemble à ceci:
package net.codejava.io;import java.io.*;import java.util.*;public class UserInputConsoleDemo {public static void main(String args) {// using InputStreamReadertry {BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));System.out.print("Enter your name: ");String name = reader.readLine();System.out.println("Your name is: " + name);} catch (IOException ioe) {ioe.printStackTrace();}// using ScannerScanner scanner = new Scanner(System.in);System.out.print("Enter your nationality: ");String nationality = scanner.nextLine();System.out.println("Your nationality is: " + nationality);// using ConsoleConsole console = System.console();if (console == null) {System.out.println("No console: not in interactive mode!");System.exit(0);}System.out.print("Enter your username: ");String username = console.readLine();System.out.print("Enter your password: ");char password = console.readPassword();System.out.println("Thank you!");System.out.println("Your username is: " + username);System.out.println("Your password is: " + String.valueOf(password));// using Console with formatted promptString job = console.readLine("Enter your job: ");String passport = console.readLine("Enter your %d (th) passport number: ", 2);System.out.println("Your job is: " + job);System.out.println("Your passport number is: " + passport);}}
Regardez la vidéo :
- Console class Javadoc
- I/O from the Command Line – The Java Tutorials
- Scanner class Javadoc
- BufferedReader class Javadoc
Tutoriels connexes :
- Exemples d’entrée-sortie de la console Java
- Tutoriel et exemples de code du scanner Java
Autres tutoriels sur les entrées-sorties de fichiers en Java :
- Comment lire et écrire un fichier texte en Java
- Comment lire et écrire des fichiers binaires en Java
- Java IO -. Exemples d’opérations courantes sur les fichiers et les répertoires
- Java Serialization Basic Example
- Understanding Java Externalization with Examples
- Comment compresser des fichiers au format ZIP en Java
- Comment extraire un fichier ZIP en Java
A propos de l’auteur :
Nam Ha Minh est un programmeur Java certifié (SCJP et SCWCD). Il a commencé à programmer avec Java à l’époque de Java 1.4 et est tombé amoureux de Java depuis lors. Faites-vous ami avec lui sur Facebook et regardez ses vidéos Java vous YouTube.