1. Introdução
Com frequência, não é necessário percorrer todas as iterações de um laço até o fim; é preciso sair dele mais cedo — por exemplo, assim que você encontra o elemento desejado. Em outros casos, é preciso pular parte do trabalho e seguir para a próxima etapa (por exemplo, você leu os dados e quer pular o processamento deles). Isso é o controle de fluxo dentro de um laço.
Os operadores break e continue em Java são feitos exatamente para isso. Vamos entender como funcionam e para que servem em tarefas reais.
2. Operador break: “Pare a máquina!”
Teoria e sintaxe
O operador break é usado para sair imediatamente do laço, onde quer que você esteja no corpo dele. Assim que a execução do programa atinge break, o laço é encerrado na hora e a execução continua na primeira linha de código após o laço.
while (uslovie)
{
if (kakoe-to_uslovie)
{
break;
}
// restante do código do laço
}
O mesmo vale para for e do-while:
for (int i = 0; i < 10; i++)
{
if (kakoe-to_uslovie)
{
break;
}
// restante do código do laço
}
Exemplo 1: verificação de número primo
Um número é primo se ele é divisível apenas por 1 e por ele mesmo. Precisamos verificar se um número é primo: percorrer todos os potenciais divisores de 2 até n-1. Se descobrirmos que nosso número é divisível por um divisor, não precisamos verificar mais nada — o número não é primo! Podemos encerrar o laço.
Exemplo:
int number = 111;
boolean found = false;
for (int i = 2; i < number; i++)
{
if (number % i == 0)
{
found = true;
System.out.println("Encontramos um divisor " + i );
break; // Encerramos o laço; não precisamos procurar mais nada!
}
}
if (!found)
{
System.out.println("Nenhum divisor encontrado — número primo.");
}
Exemplo 2: validação de entrada do usuário
Vamos escrever um pequeno aplicativo, por exemplo, um questionário interativo para coletar dados:
while (true)
{
System.out.print("Digite sua idade: ");
if (console.hasNextInt())
{
int age = console.nextInt();
if (age > 0)
{
System.out.println("Ótimo! Sua idade: " + age);
break; // dados válidos — saímos
}
else
{
System.out.println("Erro! Insira uma idade positiva.");
}
}
else
{
System.out.println("Erro! Insira um número.");
console.nextLine(); // descartamos a entrada inválida
}
}
Por que isso é útil:
Às vezes é preciso manter o laço em execução indefinidamente (ou por muito tempo) até que o usuário forneça dados corretos. Assim que ocorre o evento que nos satisfaz — aplicamos break e saímos do laço de forma definitiva.
3. Operador continue: “Próximo, por favor!”
Teoria e sintaxe
Ao contrário de break, o operador continue não encerra todo o laço, mas apenas interrompe a iteração atual: tudo o que estiver depois de continue no corpo do laço NÃO é executado — ocorre a passagem para a próxima iteração.
for (int i = 0; i < 10; i++)
{
if (uslovie)
{
continue;
}
// esta parte será executada apenas se o continue não tiver sido acionado
}
Exemplo 3: pulando números pares
Imagine que você precisa imprimir apenas os números ímpares de um intervalo. Os pares devem ser pulados.
for (int i = 1; i <= 10; i++)
{
if (i % 2 == 0)
{
continue; // se o número for par — pulamos tudo o que vem abaixo!
}
System.out.println("Número ímpar: " + i);
}
O que acontece:
Quando i = 2, 4, 6... o laço encontra continue e imediatamente passa para a próxima iteração, sem executar System.out.println.
Visualização passo a passo:
| i | i % 2 == 0 | Ação |
|---|---|---|
| 1 | false | print, sem continue |
| 2 | true | continue, sem print |
| 3 | false | print, sem continue |
| ... | ... | ... |
Os operadores break e continue são usados com muita frequência — em praticamente metade dos laços. Você vai gostar de trabalhar com eles.
GO TO FULL VERSION