3 maneiras de ler a entrada do utilizador a partir da consola em Java
Neste artigo, discutimos três maneiras diferentes de ler a entrada do utilizador no ambiente de linha de comando (também conhecido como “consola”). Cada forma é bastante fácil de utilizar e tem também as suas próprias vantagens e desvantagens.
Leitura da Entrada do Utilizador usando a classe BufferedReader
Enrolando o System.in (fluxo de entrada padrão) num InputStreamReader que é enrolado num BufferedReader, podemos ler a entrada do utilizador na linha de comando. Aqui está um exemplo:
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);
No exemplo acima, o método readLine() lê uma linha de texto a partir da linha de comando.Vantagens: A entrada é tamponada para uma leitura eficiente.Drawbacks: O código de invólucro é difícil de lembrar.
Leitura da entrada do utilizador usando a classe Scanner
A principal finalidade da classe Scanner (disponível desde Java 1.5) é analisar tipos primitivos e strings usando expressões regulares, contudo também pode ser usada para ler a entrada do utilizador na linha de comando. Eis um exemplo:
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();
Vantagens:
- Métodos convenientes para analisar primitivos (nextInt(), nextFloat(), …) a partir da entrada tokenizada.
- Expressões regulares podem ser usadas para encontrar fichas.
Drawbacks:
- li> Os métodos de leitura não estão sincronizados.
Aprenda mais: Tutorial e Exemplos de Código Java Scanner
Leitura da entrada do utilizador usando a classe Console
A classe Console foi introduzida em Java 1.6, e tem vindo a tornar-se uma forma preferida de leitura da entrada do utilizador a partir da linha de comando. Além disso, pode ser usada para ler a entrada da senha sem fazer eco dos caracteres introduzidos pelo utilizador; a sintaxe da string de formato também pode ser usada (como System.out.printf()). Eis um exemplo de código snippet:
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);
Vantagens:
- Leitura da palavra-passe sem fazer eco dos caracteres introduzidos.
- Os métodos de leitura são sincronizados.
- Sintaxe de corda-formato pode ser utilizada.
Drawbacks:
- li>Não funciona em ambiente não interactivo (como num IDE).
Saiba mais: Exemplos de Entrada de Console Java
Java Reading User’s Input Example Program
Para o seu conveniente e de referência, combinamos o trecho de código acima num programa de demonstração cujo código fonte se parece com isto:
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);}}
Veja o vídeo:
- Classe Consola Javadoc
- I/O da Linha de Comando – Os Tutoriais Java
- Classe Javadoc>/li>>Classe Javadoc#/li>BufferedReader classe Javadoc
Tutoriais relacionados:
- Java Console Input Input Output Exemplos
- Java Scanner Tutorial e Exemplos de Código
Outros Tutoriais Java File IO:
- Como ler e escrever ficheiro de texto em Java
- Como ler e escrever ficheiros binários em Java
- Java IO – Exemplos de operações comuns de ficheiros e directórios
- Understanding Java Externalization with Examples
- How to compress files in ZIP format in Java
- How to extract ZIP file in Java
Java Serialization Basic Example