1. Introdução ao laço do-while
Imagine que você está escrevendo um programa que adivinha o número pensado pelo usuário. É preciso perguntar pelo número pelo menos uma vez e repetir a solicitação até acertar. Se você verificar a condição antecipadamente, um while comum pode nem entrar no laço.
É aí que o do-while ajuda. Ao contrário do while, ele sempre executa o corpo do laço pelo menos uma vez — mesmo que a condição já seja falsa. É como ganhar um chiclete no caixa, independentemente de ter feito a compra.
Sintaxe do do-while
É simples: apenas mais um “parzinho” de palavras-chave em Java.
do
{
// Corpo do laço: este código será executado pelo menos uma vez
}
while (uslovie);
do-while
Atenção ao ponto e vírgula ; no final após o parêntese da condição! No while comum ele não aparece, mas aqui sim — uma armadilha clássica para iniciantes.
Descrição das etapas do laço do-while
- Entrada no corpo do laço (sempre pelo menos uma vez).
- Verificação da condição.
- Se a condição for verdadeira — repetir o corpo.
- Se a condição for falsa — sair do laço.
2. Diferença em relação ao while comum
Vamos relembrar o funcionamento básico de um while comum:
while (uslovie)
{
// Corpo do laço
}
O corpo não será executado nenhuma vez se a condição for falsa desde o início!
Agora, um exemplo com do-while:
do
{
// Corpo do laço
}
while (uslovie);
O corpo do laço será executado pelo menos uma vez, mesmo que a condição já seja falsa!
Vamos ilustrar a diferença com código:
// while comum
int count = 0;
while (count > 0)
{
System.out.println("count = " + count);
count--;
}
// Nada será impresso
// do-while
int count2 = 0;
do
{
System.out.println("count2 = " + count2);
count2--;
}
while (count2 > 0);
// Imprimirá "count2 = 0", embora a condição seja falsa!
Às vezes isso parece uma “estranheza”, mas é exatamente esse comportamento que precisamos para entrada do usuário e validação de dados.
3. Cenários práticos de uso do do-while
Onde esse laço aparece com mais frequência?
Validação de dados
Cenário popular: pedimos ao usuário que insira dados válidos (por exemplo, uma senha com pelo menos 6 caracteres) e repetimos a solicitação até que tudo esteja correto.
String password;
do
{
System.out.print("Digite uma nova senha (pelo menos 6 caracteres): ");
password = console.nextLine();
}
while (password.length() < 6);
System.out.println("Senha aceita!");
O corpo do laço será executado pelo menos uma vez — mesmo que o usuário digite uma senha longa imediatamente.
Menu em aplicativos de console
Padrão comum: mostrar um menu, aguardar um comando e sair apenas com um comando específico.
String command;
do
{
System.out.println("Menu:");
System.out.println("1. Mostrar saudação");
System.out.println("2. Sair");
System.out.print("Escolha uma ação: ");
command = console.nextLine();
if (command.equals("1"))
{
System.out.println("Olá, mundo!");
}
else if (!command.equals("2"))
{
System.out.println("Comando desconhecido.");
}
}
while (!command.equals("2"));
System.out.println("Até logo!");
4. Tabela: comparação entre while e outros laços
| Tipo de laço | Verificação da condição | Quantas vezes o corpo pode ser executado | Quando é apropriado |
|---|---|---|---|
|
Antes | 0 ou mais vezes | Quando o número de repetições é desconhecido de antemão |
|
Depois | 1 ou mais vezes | Quando é importante executar o corpo pelo menos uma vez |
|
Antes | 0 ou mais vezes | Quando a quantidade de iterações é conhecida |
GO TO FULL VERSION