Loop do...while em Java
Use o loop do...while em Java para executar um bloco pelo menos uma vez antes de verificar a condição.
O loop do/while é a imagem espelhada do loop while: ele executa o corpo primeiro, depois verifica a condição. O resultado é um loop garantido de executar pelo menos uma vez — mesmo que a condição fosse falsa desde o início. Esta página cobre a sintaxe, como ele difere do while, quando utilizá-lo e um erro comum de escopo.
Sintaxe
do {
// body — runs at least once
} while (condition);Observe o ponto e vírgula no final após while (condition) — fácil de esquecer, e o compilador irá avisá-lo caso isso ocorra.
Um contraponto direto ao exemplo de contador com while:
int i = 1;
do {
System.out.println(i);
i++;
} while (i <= 5);Saída: 1 2 3 4 5 — igual à versão com while, mas o corpo sempre é executado primeiro.
Quando a condição começa falsa
É aqui que do/while difere do while:
int i = 10;
do {
System.out.println(i); // prints 10 once
i++;
} while (i < 5);O corpo é executado uma vez, então a condição 10 < 5 é falsa e o loop termina. Um while simples teria ignorado o corpo completamente.
Quando usar do/while
O caso de uso clássico é a validação de entrada — você precisa ler a entrada primeiro para saber se ela é válida:
import java.util.Scanner;
Scanner s = new Scanner(System.in);
int n;
do {
System.out.print("Enter a positive number: ");
n = s.nextInt();
} while (n <= 0);Outro uso natural são os loops de menu — você sempre quer exibir o menu pelo menos uma vez:
int choice;
do {
showMenu();
choice = readChoice();
handle(choice);
} while (choice != 0);Em ambos os casos, expressar o loop com while simples significaria duplicar o trabalho da primeira iteração fora do loop, ou usar uma variável sentinela. O do/while é mais limpo.
Uma observação sobre escopo
Uma variável declarada dentro do corpo não é visível para a condição do while:
do {
int x = readValue();
} while (x > 0); // compile error: x not in scopeDeclare-a fora:
int x;
do {
x = readValue();
} while (x > 0);Com que frequência você realmente vai usá-lo
Na prática, do/while é o menos utilizado dos três loops do Java. A maioria dos loops sabe se deve ser executada antes da primeira iteração, então while e for os cobrem. Mas quando "executar uma vez e talvez novamente" é a descrição natural, do/while é a expressão mais limpa.
Um exemplo prático
O que vem a seguir
O loop Java mais comum é o loop for, que reúne um contador, uma condição e um passo de atualização em um único cabeçalho organizado.