Console I/O en Java

Lecture et écriture des entrées utilisateur en Java

1. introduction

Dans ce rapide didacticiel, nous allonsdemonstrate several ways to use a console for user input and output in Java.

Nous allons examiner quelques méthodes de la classeScanner pour gérer les entrées, puis nous montrerons une sortie simple en utilisantSystem.out.

Enfin, nous verrons comment utiliser la classeConsole, disponible depuis Java 6, à la fois pour l'entrée et la sortie de la console.

2. Lecture à partir deSystem.in

Pour nos premiers exemples, nous allonsuse the Scanner class in the java.util package to obtain the input from System.in - le flux d'entrée "standard":

Scanner scanner = new Scanner(System.in);

Soituse the nextLine() method to read an entire line of input as a String et passons à la ligne suivante:

String nameSurname = scanner.nextLine();

On peut aussiuse the next() method to get the next input token du flux:

String gender = scanner.next();

Si nous attendons des entrées numériques, nous pouvonsuse nextInt() to get the next input as an int primitive, et, de même, nous pouvonsuse nextDouble() to get a variable of type double:

int age = scanner.nextInt();
double height = scanner.nextDouble();

La classeScanner  offre égalementhasNext_Prefix() methods which return true if the next token can be interpreted as a corresponding data type.

Par exemple, nous pouvons utiliserhasNextInt() method pour vérifier si le prochain jeton peut être interprété comme un entier:

while (scanner.hasNextInt()) {
    int nmbr = scanner.nextInt();
    //...
}

De plus, nous pouvons utiliser la méthode hasNext(Pattern pattern) verscheck if the following input token matches a pattern:

if (scanner.hasNext(Pattern.compile("www.example.com"))) {
    //...
}

En plus d'utiliser la classeScanner,we can also use an InputStreamReader with System.in to get the input from the console:

BufferedReader buffReader = new BufferedReader(new InputStreamReader(System.in));

Et ensuite, nous pouvons lire les entrées et les analyser en un entier:

int i = Integer.parseInt(buffReader.readLine());

3. Ecriture dansSystem.out

Pour la sortie de la console, nous pouvons utiliserSystem.out — an instance of the PrintStream class, w qui est un type deOutputStream.

Dans notre exemple, nous utiliserons la sortie de la console pour fournir une invite de saisie utilisateur et afficher un message final à un utilisateur.

Soituse the println() method to print a String and terminate the line:

System.out.println("Please enter your name and surname: ");

Alternativement, nous pouvonsuse the print() method, which works similarly to println(), but without terminating the line:

System.out.print("Have a good");
System.out.print(" one!");

4. Utilisation de la classeConsole pour l'entrée et la sortie

Dans JDK 6 et versions ultérieures, nous pouvons utiliser la classeConsole dejava.io package pour lire et écrire sur la console.

Pour obtenir un objetConsole, nous appelleronsSystem.console():

Console console = System.console();

Ensuite, utilisons la méthodereadLine() de la classeConsole verswrite a line to the console and then read a line from the console:

String progLanguauge = console.readLine("Enter your favourite programming language: ");

Si nous avons besoin de lire des informations sensibles, comme un mot de passe, nous pouvons utiliser la méthodereadPassword() pourprompt a user for a password and read the password from the console with echoing disabled:

char[] pass = console.readPassword("To finish, enter password: ");

On peut aussiuse the Console class to write output to the console, for example, using the printf() method avec un argumentString:

console.printf(progLanguauge + " is very interesting!");

5. Conclusion

Dans cet article, nous avons montré comment utiliser plusieurs classes Java pour effectuer des entrées et des sorties utilisateur sur la console.

Comme toujours, les exemples de code de ce didacticiel sont fournisover on GitHub.