1. Вступ
Часто немає потреби виконувати всі ітерації циклу до кінця: інколи слід вийти з нього достроково — щойно ви знайдете потрібний елемент. В інших випадках варто пропустити частину роботи й перейти до наступного кроку (наприклад, ви зчитали дані й хочете пропустити їх обробку). Це й є керування потоком усередині циклу.
Оператори break і continue у Java призначені саме для цього. Розберімося, як вони працюють і де стануть у пригоді в реальних завданнях.
2. Оператор break: «Стоп, машина!»
Теорія та синтаксис
Оператор break використовують для миттєвого виходу з циклу, де б ви не перебували в його тілі. Щойно виконання програми доходить до break, цикл одразу завершується, і виконання продовжується з першого рядка коду після циклу.
while (умова)
{
if (якась_умова)
{
break;
}
// решта коду циклу
}
Так само це працює і для циклів for і do-while:
for (int i = 0; i < 10; i++)
{
if (якась_умова)
{
break;
}
// решта коду циклу
}
Приклад 1: перевірка числа на простоту
Число є простим, якщо воно ділиться лише на 1 і на себе. Потрібно перевірити число на простоту: перебрати всі потенційні дільники від 2 до n-1. Якщо зʼясувалося, що число ділиться на якийсь дільник, далі перевіряти не потрібно: воно не просте, тож цикл можна завершити.
Приклад:
int number = 111;
boolean found = false;
for (int i = 2; i < number; i++)
{
if (number % i == 0)
{
found = true;
System.out.println("Знайдено дільник " + i );
break; // Зупиняємо цикл — більше нічого шукати не треба!
}
}
if (!found)
{
System.out.println("Дільник не знайдено — число просте.");
}
Приклад 2: валідація користувацького введення
Напишімо невеликий застосунок — інтерактивну анкету для збирання даних:
while (true)
{
System.out.print("Введіть свій вік: ");
if (console.hasNextInt())
{
int age = console.nextInt();
if (age > 0)
{
System.out.println("Чудово! Ваш вік: " + age);
break; // дані коректні — виходимо
}
else
{
System.out.println("Помилка! Введіть додатний вік.");
}
}
else
{
System.out.println("Помилка! Введіть число.");
console.nextLine(); // ігноруємо некоректне введення
}
}
Навіщо це потрібно:
Іноді цикл запускають у режимі очікування (або в нескінченному режимі), доки користувач не введе коректні дані. Щойно надходять коректні дані, застосовують break і виходять із циклу.
3. Оператор continue: «Наступний, будь ласка!»
Теорія та синтаксис
На відміну від break, оператор continue не завершує весь цикл, а лише перериває поточну ітерацію: усе, що написано після continue у тілі циклу, не виконується — відбувається перехід до наступної ітерації.
for (int i = 0; i < 10; i++)
{
if (умова)
{
continue;
}
// ця частина виконається, лише якщо continue не спрацював
}
Приклад 3: пропуск парних чисел
Уявіть, що потрібно вивести лише непарні числа з діапазону. Парні потрібно пропускати.
for (int i = 1; i <= 10; i++)
{
if (i % 2 == 0)
{
continue; // якщо число парне — пропускаємо усе, що нижче!
}
System.out.println("Непарне число: " + i);
}
Що відбувається:
Коли i = 2, 4, 6..., цикл зустрічає continue і одразу переходить до наступної ітерації, не виконуючи System.out.println.
Візуалізація роботи покроково:
| i | i % 2 == 0 | Дія |
|---|---|---|
| 1 | false | виведення, continue немає |
| 2 | true | continue, виведення немає |
| 3 | false | виведення, continue немає |
| ... | ... | ... |
Оператори break і continue доволі поширені — їх часто застосовують у циклах. Працювати з ними зручно.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ