W3docs

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 scope

Declare-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

java— editable, runs on the server

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.

Prática

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