Цикл do-while в Java: проверка после первого выполнения
💻 Информатика · 8 класс
Порядок действий, точка с запятой и различие с while на разобранных трассировках.

Когда нужна проверка в конце
Цикл do-while сначала выполняет тело и только потом проверяет условие продолжения. Если управление дошло до тела и не было досрочного выхода, оно выполнится хотя бы один раз. У while условие проверяется до первого входа, поэтому возможны ноль повторений.
do {
// действия
} while (condition);После закрывающей скобки условия в do-while нужна точка с запятой. Само условие должно иметь тип boolean или преобразовываться из Boolean; числовой ноль в Java не является автоматическим false.
Разобранная трассировка
int value = 1;
do {
System.out.println(value);
value *= 2;
} while (value < 5);| Входное value | Вывод | После умножения | Проверка |
|---|---|---|---|
| 1 | 1 | 2 | 2 < 5 — true |
| 2 | 2 | 4 | 4 < 5 — true |
| 4 | 4 | 8 | 8 < 5 — false |
Программа напечатает 1, 2, 4 на отдельных строках. Итоговое значение переменной — 8. Нельзя считать, что последнее напечатанное число обязательно совпадает с конечным состоянием: изменение выполнено после печати.
Сравнение с while
Пусть до цикла value равно 10. Вариант do-while с тем же телом напечатает 10 и изменит значение на 20 до проверки. Вариант while (value < 5) не выполнит тело вообще. Замена конструкции без анализа первого входа меняет алгоритм.
Условие продолжения и выход
Условие после while означает «продолжать, пока истинно», а не «остановиться, когда истинно». Для повторного запроса неверного ввода логично продолжать при признаке ошибки. Но сама обработка ошибки должна быть определена: цикл не превращает строку в корректное число автоматически.
Break выходит из цикла сразу. Continue в do-while переводит управление к проверке условия, а не прямо к началу тела. Если перед continue пропущено необходимое изменение, цикл может повторяться бесконечно. При доказательстве завершения найдите величину, которая приближается к границе.
Практика
- Что напечатает цикл с int x = 3; затем do { System.out.println(x); x--; } while (x > 0)?
- Сколько раз выполнится do { x++; } while (false), если x первоначально 7?
- В теле забыли изменить переменную, а условие остаётся true. Завершится ли цикл сам?
Ответы
1. 3, 2, 1; после последнего уменьшения x станет 0 и условие ложно. 2. Один раз, итог x = 8. 3. Нет, если отсутствует иное действие выхода: проверка повторяется с тем же истинным результатом.
Частая ошибка
Не забывайте точку с запятой после условия и не переносите её по аналогии в while с телом: там случайный пустой оператор создаёт другой алгоритм. Для проверки выписывайте значение до тела, после тела и результат условия отдельными колонками — так видно и лишний повтор, и ошибку на границе.