К сожалению, в циклах while очень легко создать ситуацию, при которой количество повторов цикла становится бесконечным, то есть цикл повторяется снова и снова, и повторения эти в принципе никогда не прекратятся. А это означает, что класс просто "зависает", то есть фактически никогда не произойдет передача выполнения класса команде, следующей за циклом.
Например, если при проверке условия в заголовке цикла:
while (x>0)
окажется, что переменная х содержит положительное значение, цикл выполнится в первый раз. Но если внутри, в теле цикла, переменная х не изменяется, следовательно, условие снова окажется верным, и цикл выполнится во второй раз… и условие снова окажется верным, и цикл выполнится в третий раз… в четвертый… в пятый… в шестой… и так без конца…
В результате возникает так называемый "бесконечный цикл" – или, точнее сказать, бесконечное повторение цикла.
Для того, чтобы избежать подобной ситуации, следует в теле цикла обязательно изменять значение переменной, проверяющейся в условии.
|
|
Но и этого – недостаточно! Необходимо так изменять значение переменной, проверяющейся в условии, чтобы в какой-то момент проверка условия обнаружила бы, что оно неверное – и исполнение цикла завершилось бы.
Например, если фрагмент класса выглядит следующим образом:
int a=1;
while (a>0)
{
a++;
System.out.print(a+" ");
}
то мы снова получим бесконечный цикл, так как значение переменной а все время увеличивается, увеличивается и увеличивается… И все время остается положительным… В результате чего условие, записанное в заголовке цикла, выполняется "всегда"… Снова получается бесконечный цикл, то есть бесконечное повторение цикла…