W3docs

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:

  1. Uma condição que possa se tornar falsa. Uma constante true executa para sempre.
  2. Algo dentro do corpo que altere a condição. Esquecer de atualizar i torna 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 completamente
  • continue — 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

java— editable, runs on the server

O que vem a seguir

Um parente próximo do while é o loop do-while, que sempre executa o corpo pelo menos uma vez.

Prática

Prática
Quantas vezes este loop imprimirá? int i = 5; while (i < 5) { System.out.println(i); i++; }
Quantas vezes este loop imprimirá? int i = 5; while (i < 5) { System.out.println(i); i++; }
Was this page helpful?