Carregando...

Laços while em Java

Coloque o número inteiro 1 sob o nome k antes de qualquer laço. Escreva while (k <= 3) e, dentro das chaves, imprima k e depois guarde k + 1 de novo em k. A tela deve mostrar três linhas: 1, depois 2, depois 3. O início fica acima do while. O teste fica nos parênteses. O passo fica nas chaves. Essa separação é o que esta página ensina.

Início fora, teste no while, passo dentro

Crie um arquivo de programa pequeno chamado Pulse.java. A public class da primeira linha deve coincidir com o nome do arquivo: public class Pulse. Não deixe uma classe Beat ou Dial antiga neste arquivo; o compilador espera que o nome da classe e o nome do arquivo batam.
Dentro de main, guarde primeiro o contador:
int k = 1;
Essa linha não fica dentro do while. Ela só começa k em 1. Depois o laço:
while (k <= 3) {
System.out.println(k);
k = k + 1;
}
A palavra while é minúscula. Dentro dos parênteses fica só o teste: k <= 3. Não há início nem passo nesses parênteses — diferente da linha for que você viu antes. As chaves guardam a linha de escrita e o passo. System.out.println(k); escreve o número atual sem aspas em volta de k. Depois k = k + 1; guarda mais um sob k para que o próximo teste possa finalmente ficar falso. Salve o arquivo antes de compilar.

Programa que imprime 1 depois 2 depois 3

Esta é a versão que você compila primeiro.

k de 1 a 3

java
public class Pulse {
    public static void main(String[] args) {
        int k = 1;
        while (k <= 3) {
            System.out.println(k);
            k = k + 1;
        }
    }
}

Na pasta que contém Pulse.java, execute javac Pulse.java. Quando os parênteses, as chaves e os pontos e vírgulas batem, o javac não escreve nenhuma linha por conta própria. Depois execute java Pulse — não java Pulse.java. Tire o final .java do segundo comando. Os mesmos dois comandos funcionam no Windows e no macOS; esta página não depende de uma ortografia de shell diferente para nenhum dos sistemas. O programa deve imprimir três linhas e parar: 1, depois 2, depois 3. Não deve esperar você digitar. Se o terminal ficar esperando entrada do teclado, uma chamada nextLine de um exercício antigo ainda está no arquivo. Apague essa chamada e mantenha o int mais o while acima. Uma linha errada na tela não significa que você precisa reinstalar o JDK.

Percorra uma execução completa em ordem. k começa em 1 antes do while. O teste k <= 3 é verdadeiro, então o corpo roda: println escreve 1, depois o passo guarda 2. O teste ainda é verdadeiro: escreve 2, guarda 3. O teste ainda é verdadeiro: escreve 3, guarda 4. Agora k <= 3 é falso, então o laço termina. O início rodou uma vez, acima do laço. O teste rodou antes de cada passagem. O passo rodou dentro das chaves depois de cada impressão. Essas três tarefas são as mesmas ideias do for, mas não estão embaladas numa única linha de cabeçalho. Se você omitir k = k + 1; e deixar k em 1 para sempre, o teste continua verdadeiro e a mesma linha pode imprimir sem parar — esse caso sem fim é por que o passo pertence ao corpo nesta página.

Amplie o teste

Mude só o teste para o laço ir um passo mais longe:
int k = 1;
while (k <= 4) {
System.out.println(k);
k = k + 1;
}
Deixe o início e o passo como estão. Agora a tela deve mostrar quatro linhas: 1, 2, 3 e 4.

k de 1 a 4

java
public class Pulse {
    public static void main(String[] args) {
        int k = 1;
        while (k <= 4) {
            System.out.println(k);
            k = k + 1;
        }
    }
}

Compile e execute de novo: javac Pulse.java, depois java Pulse. Você deve ver quatro linhas. Você não reescreveu o println nem o passo — só o teste dentro de while (…) mudou. Depois de ver quatro linhas, você pode colocar k <= 3 de volta para voltar à primeira demo. As duas versões são Java válido. Elas ensinam a mesma forma de while com um ponto de parada diferente.

Leia a execução de quatro linhas mais uma vez. k começa em 1. Cada teste verdadeiro imprime o k atual e depois soma 1. Quando k vira 5, o teste falha e o laço para. O dígito 5 nunca aparece na tela nesta demo, porque o corpo só roda enquanto o teste ainda é verdadeiro.

📊 k e a tela da primeira demo

k antes do println Linha da tela
1 1
2 2
3 3

Use a tabela como verificação depois da primeira demo, não no lugar de uma execução. Antes de cada println nessa demo, k guarda o número que vai aparecer nessa linha. Depois da terceira impressão, o passo guarda 4 e o teste falha. Se a tela nunca parar numa versão sem passo, coloque k = k + 1; de volta dentro das chaves — não reinstale o Java.

Regras que mantêm while claro

Parênteses em volta do teste são obrigatórios. Escrever while k <= 3 { … } sem parênteses faz o javac falhar. O corpo nesta página fica sempre em chaves, porque duas linhas pertencem a cada passagem: o println e o passo. Se você deixar o passo depois da chave de fechamento, ele roda uma vez depois que o laço termina — e dentro do laço k nunca muda, então o laço pode rodar para sempre. Mantenha o passo dentro das chaves nas duas demos.

while não é for e não é switch. for embala início, teste e passo numa só linha de cabeçalho. while mantém o teste sozinho no cabeçalho e pede que você coloque o início e o passo. switch escolhe uma vez entre rótulos case. Não deixe um laço for Beat ou um switch Dial no mesmo main e não se surpreenda se a tela mostrar um cabeçalho no estilo for sobrando ou a palavra mid. O main desta sessão deve guardar só o int e o while.

Uma confusão comum é imprimir a própria sintaxe: System.out.println("while (k <= 3)");. Isso escreve os caracteres do cabeçalho while. Não repete. Outra confusão é colocar aspas em volta de k: System.out.println("k"); escreve a letra k a cada passagem. Mantenha println(k) sem aspas quando quiser o contador na tela. Se o teste já for falso quando o while é alcançado pela primeira vez — por exemplo k começa em 5 e o teste diz k <= 3 — o corpo nunca roda e a tela fica em branco. Isso ainda é um while válido; as demos desta lição mantêm um teste verdadeiro pelo menos uma vez para você ver as linhas impressas.

O que você pode fazer agora

Você pode começar um contador acima do while, colocar um teste em while (…), e manter o println e o passo dentro das chaves. Mudar o teste muda quantas linhas você obtém. A próxima página é break e continue, onde você sai de um laço mais cedo ou pula uma passagem sem terminar o laço inteiro.

🧠 Teste Seu Conhecimento

Pronto para Começar

Teste Seu Conhecimento

Desafie-se com este questionário interativo e veja o quão bem você entende o tópico

❓
6
Perguntas
🎯
70%
Para Passar
♾️
∞
Tempo
🔄
∞
Tentativas

📝 Instruções

  • Leia cada pergunta cuidadosamente
  • Selecione a melhor resposta para cada pergunta
  • Você pode refazer o quiz quantas vezes quiser
  • Seu progresso será mostrado no topo