"Olá, Amigo!

"Olá Ellie."

"Você já estudou loops, e isso é legal."

"Concordo! Agora não sei mais como viver sem eles."

"Às vezes você pode passar sem eles... Mas com mais frequência você vai precisar deles. Hoje vamos falar sobre a situação em que você precisa sair de um loop antes do previsto."

"Você quer dizer, quando a condição para continuar o loop é verdadeira, mas você ainda precisa sair do loop?"

"Exatamente! Às vezes, parece que você já é um programador. De qualquer forma, para interromper um loop antes do previsto, você pode usar a instrução break . Dê uma olhada no exemplo a seguir:

Código Explicação
Scanner console = new Scanner(System.in);
boolean isExit = false;
while (!isExit)
{
   String s = console.nextLine();
   isExit = s.equals("exit");
}
O programa lerá uma linha do teclado, até que você digite "exit".

"Entendo. O programa lê as linhas do console. Se você inserir "exit", a isExitvariável se tornará true, a condição do loop será , e o loop terminará."!isExitfalse

"Isso mesmo. Portanto, Java tem uma breakinstrução especial que permite simplificar essa lógica. Se uma breakinstrução for executada dentro de um loop, o loop termina imediatamente. O programa começará a executar a instrução que segue o loop. A instrução é muito breve :

break;

"Veja como você pode usar a breakinstrução para reescrever o exemplo que acabamos de discutir:

Código Explicação
Scanner console = new Scanner(System.in);
while (true)
{
   String s = console.nextLine();
   if (s.equals("exit"))
     break;
}
O programa lerá uma linha do teclado, até que você digite "exit".

"Talvez eu me lembre disso. Acho que será útil."

"Mas breaknão é a única instrução Java que permite controlar o comportamento de um loop. Java também possui a continueinstrução. Se você executar uma continueinstrução dentro de um loop, a iteração atual do loop terminará antes do previsto."

"O que você quer dizer com iteração?"

"Uma iteração de loop é uma execução do corpo do loop. A continueinstrução interrompe a iteração atual do loop, mas, ao contrário da breakinstrução, ela não termina o próprio loop. A instrução também é breve:

continue;

"Então, a continueinstrução pode ser usada em um loop se quisermos 'pular' a execução de certas iterações do loop?"

"Exatamente. Você entende a diferença entre breake continue? Se você precisa encontrar um sete entre 20 dígitos não repetidos, que tipo de declaração de loop e interrupção de loop você usaria?

"Hmm... eu passaria por todos os números e, se encontrasse 7, executaria um break."

"E se você precisar exibir números de 1a 20exceto para números que são divisíveis por 7?"

"Bem, aqui provavelmente preciso de continue, já que não quero sair do loop. Mas ainda não entendo muito bem."

"Deixe-me mostrar como resolver este problema. Este é o aspecto do código."

Código Explicação
int i = 1;
while (i <= 20)
{
   if ( (i % 7) == 0 )
     continue;
   System.out.println(i);
   i++;
}
O programa exibe números de 1a 20. Se o número for divisível por 7(o resto da divisão por 7é 0 ), pulamos a exibição do número.

"Por que você está me olhando com tanta desconfiança, Ellie? Há algum truque aqui?"

"Você não pode ser enganado, amigo! De fato, este código não funcionará corretamente . Ele exibirá os primeiros 6 dígitos e, em seguida , ipermanecerá para sempre preso no número 7. Afinal, a continueinstrução pula duas outras instruções: System.out.println(i)e i++. Como como resultado, assim que atingirmos o valor 7, a variável iparará de mudar e estaremos em um loop infinito. Escrevi o código dessa maneira de propósito para ilustrar um erro muito comum."

"Como podemos consertar isso?"

"Há duas opções aqui:"

Opção 1: mude iantes de executar continue, mas depoisi % 7

Opção 2: sempre incrementar ino início do loop. Mas então io valor inicial deve ser 0.

Opção 1 opção 2
int i = 1;
while (i <= 20)
{
   if ( (i % 7) == 0 )
   {
     i++;
     continue;
   }
   
   System.out.println(i);
   i++;
}
int i = 0;
while (i < 20)
{
   i++;
   if ( (i % 7) == 0)
     continue;
   System.out.println(i);
}

"Excelente! Vou tentar não cometer esse erro."

"Vou me lembrar da sua promessa!"