JavaRush /Курсы /JAVA 25 SELF /Цикл do-while: знакомство и нюансы работы

Цикл do-while: знакомство и нюансы работы

JAVA 25 SELF
4 уровень , 3 лекция
Открыта

1. Знакомство с циклом do-while

Представьте: вы пишете программу, которая угадывает число, загаданное пользователем. Нужно хотя бы один раз спросить число и повторять запрос, пока не угадаете. Если проверять условие заранее, обычный while может вообще не войти в цикл.

Здесь помогает do-while. В отличие от while, он всегда выполнит тело цикла хотя бы один раз — даже если условие сразу ложно. Это как получить жвачку на кассе, независимо от покупки.

Синтаксис do-while

Всё просто: ещё одна «парочка» ключевых слов в Java.


do
{
    // Тело цикла: этот код выполнится хотя бы один раз
}
while (условие);
Синтаксис цикла do-while

Обратите внимание на точку с запятой ; в конце после скобки условия! В обычном while её нет, а тут есть — классический капкан для новичков.

Описание шагов цикла do-while

  1. Вход в тело цикла (всегда хотя бы раз).
  2. Проверка условия.
  3. Если условие истинно — повторить тело.
  4. Если условие ложно — выйти из цикла.

2. Отличие от обычного while

Вспомним основной сценарий работы обычного while:

while (условие)
{
    // Тело цикла
}

Тело не выполнится ни разу, если условие ложно с самого начала!

Теперь пример с do-while:

do
{
    // Тело цикла
}
while (условие);

Тело цикла выполнится хотя бы один раз, даже если условие ложно сразу!

Проиллюстрируем разницу кодом:

// Обычный while
int count = 0;
while (count > 0)
{
    System.out.println("count = " + count);
    count--;
}
// Ничего не выведется

// do-while
int count2 = 0;
do
{
    System.out.println("count2 = " + count2);
    count2--;
}
while (count2 > 0);
// Выведет "count2 = 0", хотя условие ложно!

Иногда это кажется «странностью», но ровно такое поведение и нужно при пользовательском вводе и валидации данных.

3. Практические сценарии применения do-while

Где этот цикл встречается чаще всего?

Валидация данных

Популярный сценарий: просим пользователя ввести корректные данные (например, пароль не короче 6 символов) и повторяем запрос, пока всё не будет верно.

String password;
do
{
    System.out.print("Введите новый пароль (не менее 6 символов): ");
    password = console.nextLine();
}
while (password.length() < 6);

System.out.println("Пароль принят!");

Тело цикла выполнится хотя бы раз — даже если пользователь мгновенно введёт длинный пароль.

Меню в консольных приложениях

Частый паттерн: показывать меню, ждать команду и выходить только по специальной команде.

String command;
do
{
    System.out.println("Меню:");
    System.out.println("1. Показать приветствие");
    System.out.println("2. Выйти");
    System.out.print("Выберите действие: ");
    command = console.nextLine();

    if (command.equals("1")) 
    {
        System.out.println("Привет, мир!");
    }
    else if (!command.equals("2"))
    {
        System.out.println("Неизвестная команда.");
    }
}
while (!command.equals("2"));

System.out.println("Пока!");

4. Таблица: Сравнение while и других циклов

Тип цикла Проверка условия Сколько раз может выполниться тело Где уместно
while
До 0 и более раз Когда заранее неизвестно число повторений
do-while
После 1 и более раз Когда важно выполнить тело хотя бы один раз
for
До 0 и более раз Когда известно количество итераций
1
Задача
JAVA 25 SELF, 4 уровень, 3 лекция
Недоступна
Первая загрузка игры 🎮
Первая загрузка игры 🎮
1
Задача
JAVA 25 SELF, 4 уровень, 3 лекция
Недоступна
Ввод PIN-кода 💳
Ввод PIN-кода 💳
1
Задача
JAVA 25 SELF, 4 уровень, 3 лекция
Недоступна
Интерактивный терминал 💻
Интерактивный терминал 💻
1
Задача
JAVA 25 SELF, 4 уровень, 3 лекция
Недоступна
Регистрация нового аккаунта 🔒
Регистрация нового аккаунта 🔒
Комментарии (14)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Danylo Prodius Уровень 5
21 января 2026
Орешки ... Биг Боб
Archibald26 Уровень 5
17 декабря 2025
Если все логично, то почему сложно?
hottabych007 Уровень 14
9 декабря 2025
Становиться сложнее, то есть менее понятно, но тем интереснее😀
Anonymous #6428995 Уровень 5
3 декабря 2025
На всякий случай советую всем выводимые фразы копировать в код из условия, а также перед проверкой правильности выполнения условия проверять корректность написания кода и выполнения условия при помощи кнопки "Запуск", а не сразу тыкать на "Проверка" - так вы сможете отловить и пофиксить свои ошибки перед тем, как IDE их зафейлит
C0N5P1RACY Уровень 23
17 октября 2025
Зачем в задачах сразу выставляются все do/while/if/else и тд? По факту единственное что мы делаем, это постоянно пишем System.out.println();, спасибо конечно что мы теперь сами пишем Scanner, но хотелось бы что б всего этого не было изначально, мне конечно никто не запрещает стирать это все, но после стирания и решения задачи самому, боюсь что "поломаю" сценарий у авто-проверки, и мои решения, пусть и будут правильные, но бот их не поймет. Надеюсь дальше задачи будут без этого, а то получается что я тренирую только всего пару команд, а все остальное за меня уже сделали.
Agurez Gaming Уровень 2
17 октября 2025
Ты считаешь себя очень умным, это не так) Решай пока просто можно решать, далее будет сложнее
Anonymous #6413862 Уровень 7
24 октября 2025
вот именно, дальше будет сложнее, а практиковался все это время только на println
Екатерина Уровень 4
15 января 2026
Я стираю весь внутренний код со всеми комментариями и словами, пишу сама, сценарий не ломается у авто-проверки :) В большинстве случаев, если запуск успешный, и все соответствует критериям задачи, то бот пропускает. Если нет, в любом случае, более полезно будет покопаться самому и несколько раз потыкать проверку (да, будут потрачены попытки, и потом у вас будет большое число, но как будто это совсем не важно...)
Ksanders Уровень 32
24 сентября 2025
В последней задаче почему-то не приняло мое решение c первого раза - встроенный компилятор постоянно ругался на то, что у меня в выводимом сообщении об успешной регистрации опечатка, хотя я это сообщение копировал из условия задачи, Скрин не сохранился :-(

// Сообщение об успешной регистрации
        System.out.println("Пароль надёжен, аккаунт создан!");
Goodsmack Уровень 1
26 сентября 2025
У меня так же было😄 Минут 20 сидел не мог понять в чём проблема, просто потыкал проверку ещё пару раз и на третий приняло, лол)
Natasha Уровень 5
19 сентября 2025
Только у меня встроенная на сайте idea не работает? запускаю проверки с кодом и ничего не происходит - либо пишет что я использую вечный цикл, потому что программа выполняется долго. Но по факту это не так - висит само приложение (я проверяю свой код в нормальной IntelliJ IDEA, так и пришлось скачать, со встроенной работать не возможно) У кого работает подскажите в каком браузере.. Я пробовала гугл и яндекс ну вот пожалуйста, всё засчитали и при этом проверьте свой код
Kidze Уровень 21
21 сентября 2025
По условию задачи пароль должен состоять из 6 и более символов, у вас введено 5, если сам код написан правильно то по идее решение будет принято, но если подставить туда ваше 12345 цикл не завершится. Думаю в этом было дело, лучше еще код скинуть чтобы было понятнее. Прогоны работают с введенными данными в хроме у меня.
Серега Батенин Уровень 12
27 сентября 2025
Вообще для Идеи есть плагин специальный и проходить лекции и решать задачи можно прям в ней, если вам там удобнее. По крайней мере с автодополнением слов и сниппетами писать код явно быстрее)
Julia Sevruk Уровень 6
27 сентября 2025
У меня было также когда в условии было <= 6 (надо было поменять на <6 и приняло)