1. Знайомство з циклом do-while
Уявіть, що ви пишете програму, яка вгадує число, загадане користувачем. Потрібно бодай один раз запитати число й повторювати запит, доки не вгадаєте його. Якщо перевіряти умову заздалегідь, звичайний while може взагалі не увійти в цикл.
Тут виручає цикл do-while. На відміну від while, він завжди виконає тіло циклу щонайменше один раз — навіть якщо умова одразу хибна. Це корисно, коли необхідно виконати дію перед перевіркою умови.
Синтаксис do-while
Усе просто: у Java для цього є пара ключових слів.
do
{
// Тіло циклу: цей код виконається щонайменше один раз
}
while (умова);
do-while
Зверніть увагу на крапку з комою ; наприкінці — після закривної дужки умови! У звичайному while її немає, а тут вона є — класична пастка для новачків.
Опис кроків циклу do-while:
- Вхід у тіло циклу (завжди бодай раз).
- Перевірка умови.
- Якщо умова істинна — повторити виконання тіла циклу.
- Якщо умова хибна — вийти з циклу.
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 та інших циклів
| Тип циклу | Перевірка умови | Скільки разів може виконатися тіло | Де доречно |
|---|---|---|---|
|
Перед | 0 або більше разів | Коли заздалегідь невідома кількість повторень |
|
Після | 1 або більше разів | Коли важливо, щоб тіло виконалося бодай один раз |
|
Перед | 0 або більше разів | Коли відома кількість ітерацій |
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ