Leggere e scrivere input utente in Java

1. Introduzione

In questo breve tutorial, dimostreremo diversi modi per utilizzare una console per l'input e l'output dell'utente in Java .

Daremo uno sguardo ad alcuni metodi della classe Scanner per la gestione dell'input, e poi mostreremo alcuni semplici output usando System.out .

Infine, vedremo come utilizzare la classe Console , disponibile da Java 6, sia per l'input che per l'output della console.

2. Lettura da System.in

Per i nostri primi esempi, useremo la classe Scanner nel pacchetto java.util per ottenere l'input da System.in - il flusso di input "standard":

Scanner scanner = new Scanner(System.in);

Facciamo usa il nextLine () metodo per leggere un'intera linea di ingresso come una stringa e passare alla riga successiva:

String nameSurname = scanner.nextLine();

Possiamo anche usare il metodo next () per ottenere il prossimo token di input dallo stream:

String gender = scanner.next();

Se ci aspettiamo input numerici, possiamo usare nextInt () per ottenere l'input successivo come una primitiva int e, analogamente, possiamo usare nextDouble () per ottenere una variabile di tipo double :

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

La classe Scanner offre anche metodi hasNext_Prefix () che restituiscono true se il token successivo può essere interpretato come un tipo di dati corrispondente .

Ad esempio, possiamo usare hasNextInt ()metodo per verificare se il token successivo può essere interpretato come un numero intero:

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

Inoltre, possiamo usare il metodo hasNext (Pattern pattern) per verificare se il seguente token di input corrisponde a un pattern :

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

Oltre a utilizzare la classe Scanner , possiamo anche utilizzare un Input StreamReader con System.in per ottenere l'input dalla console :

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

E poi possiamo leggere l'input e analizzarlo in un numero intero:

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

3. Scrittura su System.out

Per l'output della console, possiamo usare System.out , un'istanza della classe PrintStream , che è un tipo di OutputStream .

Nel nostro esempio, useremo l'output della console per fornire un prompt per l'input dell'utente e visualizzare un messaggio finale a un utente.

Cerchiamo di utilizzare il println () metodo per stampare una stringa e terminare la linea :

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

In alternativa, possiamo usare il metodo print () , che funziona in modo simile a println () , ma senza terminare la riga :

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

4. Utilizzo della classe della console per input e output

In JDK 6 e versioni successive, è possibile utilizzare la classe Console dal pacchetto java.io per leggere e scrivere sulla console.

Per ottenere un oggetto Console , chiameremo System.console () :

Console console = System.console();

Successivamente, usiamo il metodo readLine () della classe Console per scrivere una riga sulla console e quindi leggere una riga dalla console :

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

Se abbiamo bisogno di leggere informazioni sensibili, come una password, possiamo utilizzare il metodo readPassword () per richiedere una password a un utente e leggere la password dalla console con l'eco disabilitato :

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

Possiamo anche usare la classe Console per scrivere l'output sulla console, ad esempio, utilizzando il metodo printf () con un argomento String :

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

5. conclusione

In questo articolo, abbiamo mostrato come utilizzare diverse classi Java per eseguire l'input e l'output dell'utente della console.

Come sempre, gli esempi di codice di questo tutorial sono forniti su GitHub.