Lendo linhas
readLine e laços
Lendo linhas é uma aula grátis de Java Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Java Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Java Academy inclui 4 aulas no total.
O método readLine
readLine() é o coração de BufferedReader. Ele lê caracteres até encontrar uma quebra de linha (a tecla Enter) e então retorna a linha como uma String.
O texto retornado não inclui o caractere de nova linha. Nesta lição, leremos uma ou várias linhas.
String line = br.readLine();Lendo uma linha
Aqui está o caso mais simples: ler um nome e exibir uma saudação. readLine() bloqueia (aguarda) até que o usuário pressione Enter.
Como lê de System.in, este trecho pausa para aguardar a entrada do teclado e não pode ser executado automaticamente aqui.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
String name = br.readLine();
System.out.println("Welcome, " + name + "!");
}
}O que readLine retorna no fim
Quando não há mais entrada (fim do fluxo ou quando o usuário sinaliza EOF), readLine() retorna null em vez de uma String.
Este é um sinal crucial: verificar null é a forma de saber quando devemos parar de ler.
String line = br.readLine();
if (line == null) {
System.out.println("No more input.");
}Lendo até EOF
Para ler todas as linhas até o fim da entrada, repita o processo enquanto readLine() não for null. Esse padrão comum atribui o valor e faz a verificação na mesma condição.
A cada repetição, você recebe a próxima linha, até que null encerre o ciclo corretamente.
String line;
while ((line = br.readLine()) != null) {
System.out.println("Got: " + line);
}Um leitor de várias linhas
Aqui está um programa completo que exibe novamente cada linha digitada até o fim do fluxo.
Ele lê de System.in, portanto aguarda a entrada e não pode ser executado automaticamente, mas o padrão do ciclo é exatamente o que você reutilizará.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
String line;
while ((line = br.readLine()) != null) {
System.out.println("Echo: " + line);
}
}
}Contando linhas
Você pode realizar um trabalho dentro do ciclo, como contar. Aqui, contabilizamos quantas linhas chegam.
Cada iteração lê uma nova linha e incrementa um contador. Quando a entrada termina, exibimos o total.
int count = 0;
String line;
while ((line = br.readLine()) != null) {
count++;
}
System.out.println("Lines read: " + count);Linhas vazias e nulo
Tenha cuidado: uma linha vazia (quando o usuário apenas pressiona Enter) retorna "", uma String vazia — não null.
Assim, "".equals(line) significa uma linha em branco, enquanto line == null significa que a entrada realmente terminou. São situações diferentes.
if (line == null) {
// input finished
} else if (line.isEmpty()) {
// user pressed Enter on a blank line
}Simulando linhas sem a entrada padrão
Para ver readLine() em ação sem usar a entrada do teclado, podemos alimentar um BufferedReader com um StringReader. O programa pode ser executado diretamente.
A cadeia de caracteres contém duas linhas separadas por \n, e o ciclo exibe cada uma delas.
import java.io.BufferedReader;
import java.io.StringReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br =
new BufferedReader(new StringReader("apple\nbanana"));
String line;
while ((line = br.readLine()) != null) {
System.out.println("Fruit: " + line);
}
}
}Removendo espaços em branco
A entrada costuma conter espaços supérfluos. Use trim() para remover os espaços em branco iniciais e finais de uma linha antes de usá-la.
Isso mantém as comparações e as conversões confiáveis, especialmente quando os usuários adicionam espaços acidentalmente.
import java.io.BufferedReader;
import java.io.StringReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br =
new BufferedReader(new StringReader(" hello \n"));
String line = br.readLine().trim();
System.out.println("[" + line + "]");
}
}Lendo um número fixo de linhas
Às vezes, você sabe a quantidade de linhas de antemão. Um ciclo for lê exatamente esse número de linhas.
Isso é comum quando um problema diz: “o primeiro número informa quantas linhas vêm em seguida”.
for (int i = 0; i < 3; i++) {
String item = br.readLine();
System.out.println(i + ": " + item);
}Hábitos essenciais para readLine
Lembre-se destes hábitos:
- Sempre verifique se o valor é
nullantes de usar uma linha. - Use
trim()quando espaços supérfluos puderem causar erros. - Uma cadeia vazia não é igual a
null.
A seguir, transformaremos essas linhas em números.
Verificação rápida
O que readLine() retorna quando o fluxo de entrada chega ao fim?
Recapitulação
Você aprendeu a ler linhas individuais, repetir com while ((line = br.readLine()) != null) e diferenciar uma linha em branco ("") do fim da entrada (null).
Você também viu exemplos executáveis usando StringReader. A seguir: transformar linhas de texto em números.
Perguntas Frequentes
A aula “Lendo linhas” é grátis?
Sim — o texto completo de “Lendo linhas” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Java Academy, atualize para CoddyKit PRO. O curso de Java Academy inclui 4 aulas no total.
O que vou aprender em “Lendo linhas”?
readLine e laços Você pratica Java Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Java Academy?
Nenhuma experiência prévia é necessária. Java Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.
Quanto tempo leva a aula “Lendo linhas”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Java Academy?
Sim. Cada aula de Java Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.