Articles

3 maneiras de ler a entrada do utilizador a partir da consola em Java

Detalhes Escrito por Nam Ha Minh Actualizado em 27 de Julho de 2019&nbsp | &nbsp Imprimir Email

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
  • Java Serialization Basic Example

  • Understanding Java Externalization with Examples
  • How to compress files in ZIP format in Java
  • How to extract ZIP file in Java
>h3>Acerca do Autor: Nam Ha Minh é programador certificado Java (SCJP e SCWCD). Começou a programar com Java no tempo de Java 1.4 e tem vindo a apaixonar-se por Java desde então. Faça amizade com ele no Facebook e veja os seus vídeos Java no YouTube.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *