Estrutura Geral
O laço do-while executa as instruções pelo menos uma vez antes de verificar a condição.
A forma geral é:
do {
instruções;
} while(condição);
Diferença dos Laços for e while
- Em for e while, a condição é verificada antes da execução do laço.
- Em do-while, a condição é verificada após a execução do laço, garantindo que ele execute pelo menos uma vez.
Exemplo Simples
Um programa que entra em laço até o usuário inserir a letra 'q':
// Demonstra o laço do-while.
class DWDemo {
public static void main(String args[]) throws java.io.IOException {
char ch;
do {
System.out.print("Press a key followed by ENTER: ");
ch = (char) System.in.read(); // obtém um char
} while(ch != 'q');
}
}
Jogo de Adivinhação Melhorado
Um programa de adivinhação que entra em laço até o usuário adivinhar a letra correta:
ver Guess4.java
Explicação do Programa de Adivinhação
- O programa lê caracteres do usuário até que a letra correta seja adivinhada.
- Há dois laços do-while:
- O primeiro laço continua até o usuário adivinhar a letra correta.
- O segundo laço descarta caracteres extras do buffer de entrada até encontrar um \n (nova linha).
Exemplo de Execução
Execução típica do programa de adivinhação
I'm thinking of a letter between A and Z.
Can you guess it: A
...Sorry, you're too low
Try again!
I'm thinking of a letter between A and Z.
Can you guess it: Z
...Sorry, you're too high
Try again!
I'm thinking of a letter between A and Z.
Can you guess it: K
** Right **
Detalhe Importante
- A entrada do console é armazenada em um buffer de linha, então pressionar ENTER adiciona uma sequência de nova linha que precisa ser descartada.
- O segundo laço do-while remove caracteres extras do buffer para evitar leituras indesejadas.
Conclusão
- O laço do-while é útil quando você precisa garantir que o bloco de instruções seja executado pelo menos uma vez.
- Ele é especialmente prático para interações com o usuário onde uma ação inicial é necessária antes da verificação da condição.