Articles

3 modi per leggere l’input dell’utente da console in Java

Dettagli Scritto da Nam Ha Minh Ultimo aggiornamento il 27 luglio 2019&nbsp | &nbsp Stampa Email

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.

Lascia una risposta

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *