1. Команда break
Давайте розберемо приклад з попереднього уроку:
| Код | Пояснення |
|---|---|
|
Програма буде зчитувати рядки з клавіатури, поки не буде введено рядок exit. |
Програма читає з консолі рядки, поки не буде введено слово exit. Якщо ввести це слово, змінна isExit стане true, а умова циклу !isExit прийме значення false, і цикл завершиться.
У Java є спеціальний оператор break, який дозволяє спростити написання такої логіки. Якщо виконати команду break всередині циклу, він негайно завершиться: програма почне виконувати команди, які йдуть після циклу. Команда дуже лаконічна:
break;
Ось як можна переписати щойно розглянутий приклад із використанням break:
| Код | Пояснення |
|---|---|
|
Програма буде зчитувати рядки з клавіатури, поки не буде введено рядок exit. |
2. Команда continue
Але break — не єдиний оператор, який дозволяє керувати поведінкою циклу. У Java є ще один оператор — continue. Якщо виконати команду continue всередині циклу, поточна ітерація циклу завершиться достроково.
Виконання тіла циклу один раз називається ітерацією. Команда continue перериває поточну ітерацію циклу, але не сам цикл, на відміну від команди break. Команда теж лаконічна:
continue;
Цей оператор continue дуже зручно використовувати в циклі, якщо ми хочемо «пропускати» виконання тіла циклу для деяких ситуацій.
Задача: ми хочемо написати програму, яка виводить на екран 20 чисел від 1 до 20, і при цьому пропускає числа, які діляться на 7. Ось як міг би виглядати цей код:
| Код | Пояснення |
|---|---|
|
Програма виводить на екран числа з 1 по 20. Якщо число ділиться на 7 (остача від ділення на 7 дорівнює 0), вивід на екран пропускається. |
Насправді такий код працювати не буде, тому що i назавжди застрягне на цифрі 7. Адже виклик continue призвів до того, що пропустилися дві команди — System.out.println(i) і i++. Тому, досягнувши значення 7, змінна i перестане змінюватися, і цикл виконуватиметься вічно.
Ми спеціально написали такий код, оскільки це дуже поширена помилка. Як же його виправити?
Тут є два варіанти:
Варіант 1: змінити i перед викликом continue, але після виклику i % 7
Варіант 2: збільшувати i завжди на початку циклу. Але тоді стартове значення i має бути 0.
| Варіант 1 | Варіант 2 |
|---|---|
|
|
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ