1. breakdeclaração

Vamos dar uma olhada em um exemplo da lição anterior:

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".

O programa lê as linhas do console até que a palavra exitseja inserida. Se você inserir essa palavra, a isExit variável se tornará true, a condição do loop será , e o loop terminará."!isExitfalse

Java tem uma breakinstrução especial que permite simplificar essa lógica. Se uma breakinstrução for executada dentro de um loop, o loop terminará imediatamente. O programa começará a executar a instrução que segue o loop. A declaraçã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".


2. continue declaração

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

Executar o corpo do loop uma vez é chamado de iteração do loop. A continueinstrução interrompe a iteração atual do loop, mas, ao contrário da breakinstrução, ela não encerra o próprio loop. A declaração também é breve:

continue;

A continueinstrução é super conveniente em um loop se quisermos 'pular' a execução do corpo do loop em determinadas situações.

Tarefa: Queremos escrever um programa que imprima números de 1a 20, mas pule números divisíveis por 7. Isto é o que este código pode parecer.

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 restante da divisão por 7é 0), pulamos a exibição do número.

Na verdade, este código não funcionará , pois ificará para sempre preso no número 7. Afinal, a continueinstrução pula duas outras instruções: System.out.println(i)e i++. Como resultado, assim que atingirmos o valor 7, a variável iparará de mudar e estaremos em um loop infinito.

Escrevemos o código dessa maneira de propósito para ilustrar esse erro muito comum. Como podemos consertar isso?

Existem 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);
}