"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 |
---|---|
|
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 isExit
variável se tornará true
, a condição do loop será , e o loop terminará."!isExit
false
"Isso mesmo. Portanto, Java tem uma break
instrução especial que permite simplificar essa lógica. Se uma break
instruçã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 break
instrução para reescrever o exemplo que acabamos de discutir:
Código | Explicação |
---|---|
|
O programa lerá uma linha do teclado, até que você digite "exit" . |
"Talvez eu me lembre disso. Acho que será útil."
"Mas break
não é a única instrução Java que permite controlar o comportamento de um loop. Java também possui a continue
instrução. Se você executar uma continue
instruçã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 continue
instrução interrompe a iteração atual do loop, mas, ao contrário da break
instrução, ela não termina o próprio loop. A instrução também é breve:
continue;
"Então, a continue
instruçã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 break
e 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 1
a 20
exceto 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 |
---|---|
|
O programa exibe números de 1 a 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 , i
permanecerá para sempre preso no número 7
. Afinal, a continue
instrução pula duas outras instruções: System.out.println(i)
e i++
. Como como resultado, assim que atingirmos o valor 7
, a variável i
parará 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 i
antes de executar continue
, mas depoisi % 7
Opção 2: sempre incrementar i
no início do loop. Mas então i
o valor inicial deve ser 0
.
Opção 1 | opção 2 |
---|---|
|
|
"Excelente! Vou tentar não cometer esse erro."
"Vou me lembrar da sua promessa!"
GO TO FULL VERSION