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