Loop while em Java
Repita código em Java com o loop while, incluindo verificação de condição e loops infinitos.
O loop while é a forma mais simples de repetir um bloco de código em Java. Enquanto sua condição for true, o corpo é executado novamente. Quando a condição se torna false, o loop termina e a execução continua após o loop.
Sintaxe
while (condition) {
// body — runs while condition is true
}Um exemplo mínimo — contar de 1 a 5:
int i = 1;
while (i <= 5) {
System.out.println(i);
i++;
}A condição i <= 5 é verificada antes de cada iteração. Quando i se torna 6, a condição é falsa e o loop termina.
As duas partes que você deve lembrar
Todo loop while precisa de duas coisas para terminar:
- Uma condição que possa se tornar falsa. Uma constante
trueexecuta para sempre. - Algo dentro do corpo que altere a condição. Esquecer de atualizar
itorna o loop infinito.
Um erro comum de iniciante:
int i = 1;
while (i <= 5) {
System.out.println(i);
// forgot i++ — loop runs forever
}Se o seu programa travar, procure aqui primeiro. Pressionar Ctrl+C no terminal interrompe um programa fora de controle.
O outro erro clássico de limite é o operador de comparação. while (i <= 5) com i começando em 1 executa cinco vezes; while (i < 5) executa apenas quatro. Decida se o valor do limite deve ser incluído antes de escrever a condição.
A condição é verificada primeiro
Se a condição for falsa no início, o corpo nunca é executado — nem mesmo uma vez:
int i = 10;
while (i < 5) {
System.out.println(i); // never executes
}Essa é a principal diferença em relação ao loop do/while, que sempre executa o corpo pelo menos uma vez.
Quando while é a escolha certa
Um loop for é melhor quando você sabe a quantidade de iterações antecipadamente (for (int i = 0; i < 10; i++)). Um loop while é melhor quando a condição de parada não está ligada a um contador — está ligada a alguma mudança de estado, e você não sabe de antemão quantas iterações serão necessárias.
Lendo até o fim da entrada:
import java.util.Scanner;
Scanner s = new Scanner(System.in);
while (s.hasNextLine()) {
String line = s.nextLine();
System.out.println("got: " + line);
}Tentando novamente até obter sucesso:
boolean connected = false;
int attempts = 0;
while (!connected && attempts < 5) {
connected = tryConnect();
attempts++;
}Processando uma fila:
while (!queue.isEmpty()) {
Task t = queue.poll();
t.run();
}Loops infinitos de propósito
Às vezes você quer que o loop execute para sempre — tipicamente em loops de eventos, servidores ou simulações — e você sai com um break:
while (true) {
String input = readCommand();
if (input.equals("quit")) {
break;
}
handle(input);
}while (true) é mais idiomático do que while (1 == 1) ou outros truques.
Usando break e continue
Dentro de qualquer loop você pode usar:
break— sai do loop completamentecontinue— pula o restante da iteração atual e reavalia a condição
Ambos são abordados em detalhes em break e continue.
Um exemplo completo
O que vem a seguir
Um parente próximo do while é o loop do-while, que sempre executa o corpo pelo menos uma vez.