Para ler dados do console em Java de forma eficiente e adequada a caracteres (ideal para internacionalização), é recomendado utilizar fluxos de caracteres em vez de fluxos de bytes. Como o System.in é um fluxo de bytes, ele deve ser encapsulado em um Reader. A classe recomendada para essa tarefa é o BufferedReader, que utiliza o InputStreamReader para converter bytes em caracteres.
O processo funciona da seguinte forma:
Crie um InputStreamReader associado ao System.in:
InputStreamReader fluxoEntrada = new InputStreamReader(System.in);
Em seguida, passe este InputStreamReader ao construtor de BufferedReader:
BufferedReader br = new BufferedReader(fluxoEntrada);
Dessa forma, br é um fluxo de entrada baseado em caracteres conectado ao console.
Métodos para leitura de caracteres e strings
- read(): Lê um único caractere Unicode e retorna -1 ao final do fluxo.
- readLine(): Lê uma linha completa como uma String até o usuário pressionar ENTER, retornando null no final do fluxo.
Exemplo de uso:
O código a seguir lê caracteres do console até o caractere . ser digitado:
char c;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Enter characters, period to quit.");
do {
c = (char) br.read();
System.out.println(c);
} while(c != '.');
Outro exemplo permite ler linhas de texto até a palavra "stop" ser inserida:
String str;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Enter lines of text.");
System.out.println("Enter 'stop' to quit.");
do {
str = br.readLine();
System.out.println(str);
} while(!str.equals("stop"));
Essas abordagens tornam a entrada de dados via teclado mais conveniente e estruturada, especialmente para programas que requerem suporte a diferentes codificações de caracteres.
Top comments (1)
This is a great breakdown of how to use character streams for console input in Java! The examples are clear and helpful for understanding how to read both single characters and entire lines.