A declaração while
Uma estrutura de controle de repetição, à qual nos referimos como um loop, executa uma declaração de código várias vezes. Usando variáveis não constantes, cada repetição do estado pode ser diferente. Por exemplo, uma instrução que repete uma lista de nomes exclusivos e saídas deles encontrariam um novo nome em cada execução do loop.
A estrutura de controle de repetição mais simples em Java é a instrução while, descrita na Figura 2.5. Como todas as estruturas de controle de repetição, ele tem uma condição de termino, com uma expressão booleana, que continuará enquanto a expressão for avaliada como verdadeira .
Como mostrado na Figura 2.5, o loop while é semelhante a uma instrução if-then em que é composto de uma expressão booleana e uma declaração ou bloco de instruções. Durante a execução, a expressão booleana é avaliada antes de cada iteração do laço e sai se a avaliação retornar falso. É importante notar que o laço while pode terminar após a sua primeira avaliação da expressão booleana . Desta forma, o bloco de declaração pode nunca ser executado.
Vamos voltar ao nosso exemplo de mouse do Capítulo 1 e mostrar um loop que pode ser usado para modelar um rato comendo:
int roomInBelly = 5;
public void eatCheese(int bitesOfCheese) {
while (bitesOfCheese > 0 && roomInBelly > 0) {
bitesOfCheese--;
roomInBelly--;
}
System.out.println(bitesOfCheese+" pieces of cheese left");
}
Este método leva uma quantidade de comida, neste caso queijo, e continua até que o rato não tem espaço na barriga ou não há comida para comer. Com cada iteração do loop, o rato “come” uma mordida de comida e perde um ponto em sua barriga. Usando um booleano composto, você garante que o loop while pode acabar em qualquer uma das condições.
Loops Infinitos
Considere o seguinte segmento de código:
int x = 2;
int y = 5;
while(x < 10)
y++;
Você pode notar um problema gritante com esta afirmação: nunca terminará! O expressão booleana que é avaliada antes de cada iteração de loop nunca é modificada, então a expressão (x <10) será sempre avaliada como verdadeira. O resultado é que o loop nunca terminará, criando o que é comumente chamado de loop infinito .
Loops infinitos são algo que você deve estar ciente de quando você cria um loop em seu aplicação. Você deve estar absolutamente certo de que o loop eventualmente terminará sob alguma condição. Primeiro, verifique se a variável de loop está modificada. Então, garanta que a condição de termino será eventualmente alcançada em todas as circunstâncias. Como você verá na próxima seção "Noções básicas sobre controle de fluxo avançado", um loop também pode sair sob outras condições, como uma declaração de quebra.