3 modi per leggere l’input dell’utente da console in Java
In questo articolo, discutiamo tre modi diversi per leggere l’input dell’utente nell’ambiente della linea di comando (noto anche come “console”). Ogni modo è abbastanza facile da usare e ha anche i suoi vantaggi e svantaggi.
Lettura dell’input dell’utente usando la classe BufferedReader
Involgendo il System.in (flusso di input standard) in un InputStreamReader che è avvolto in un BufferedReader, possiamo leggere l’input dell’utente nella linea di comando. Ecco un esempio:
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);
Nell’esempio precedente, il metodo readLine() legge una riga di testo dalla riga di comando: L’input viene bufferizzato per una lettura efficiente.Svantaggi: Il codice di wrapping è difficile da ricordare.
Lettura dell’input dell’utente usando la classe Scanner
Lo scopo principale della classe Scanner (disponibile da Java 1.5) è di analizzare tipi primitivi e stringhe usando espressioni regolari, tuttavia può anche essere usata per leggere l’input dell’utente nella linea di comando. Ecco un esempio:
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();
Vantaggi:
- Metodi convenienti per analizzare le primitive (nextInt(), nextFloat(), …) dall’input tokenizzato.
- Le espressioni regolari possono essere usate per trovare i token.
Svantaggi:
- I metodi di lettura non sono sincronizzati.
Impara di più: Java Scanner Tutorial ed esempi di codice
Lettura dell’input dell’utente usando la classe Console
La classe Console è stata introdotta in Java 1.6, ed è diventata il modo preferito per leggere l’input dell’utente dalla linea di comando. Inoltre, può essere usata per leggere input di tipo password senza fare l’eco dei caratteri inseriti dall’utente; può anche essere usata la sintassi della stringa di formato (come System.out.printf()). Ecco un esempio di codice:
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);
Vantaggi:
- Lettura della password senza eco dei caratteri inseriti.
- I metodi di lettura sono sincronizzati.
- Si può usare la sintassi della stringa di formato.
Svantaggi:
- Non funziona in ambiente non interattivo (come in un IDE).
Per saperne di più: Java Console Input Output Examples
Java Reading User’s Input Example Program
Per vostra comodità e scopo di riferimento, combiniamo il frammento di codice di cui sopra in un programma demo il cui codice sorgente assomiglia a questo:
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);}}
Guarda il video:
- Console classe Javadoc
- I/O dalla linea di comando – I tutorial Java
- Scanner classe Javadoc
- BufferedReader classe Javadoc
Tutorial correlati:
- Esempi di input/output da console Java
- Esempi di codice e tutorial sullo scanner Java
Altri tutorial sull’IO di file Java:
- Come leggere e scrivere file di testo in Java
- Come leggere e scrivere file binari in Java
- Java IO – Esempi di operazioni comuni su file e directory
- Serializzazione Java Esempio di base
- Comprensione dell’esternalizzazione Java con esempi
- Come comprimere file in formato ZIP in Java
- Come estrarre file ZIP in Java
Informazioni sull’autore:
Nam Ha Minh è programmatore Java certificato (SCJP e SCWCD). Ha iniziato a programmare con Java ai tempi di Java 1.4 e da allora si è innamorato di Java. Fate amicizia con lui su Facebook e guardate i suoi video Java su YouTube.