JavaRush /Java блог /Java Developer /Цикли в Java

Цикли в Java

Стаття з групи Java Developer

Що таке цикли

Програма, написана мовою Java, складається з певного коду. Зазвичай він виконується послідовно: рядок за рядком, зверху вниз. Але є й такі конструкції коду, які змінюють лінійне виконання програми. Їх називають керівними конструкціями. Цикли в Java - 1Завдяки їм код можна виконувати вибірково. Наприклад, запустити один блок коду замість іншого. Цикли – це різновид керівних конструкцій для організації багаторазового виконання однієї і тієї самої ділянки коду. Код усередині такої керівної конструкції виконується циклічно. Кожне виконання коду – це ітерація циклу. Кількість ітерацій регулюється умовою циклу. Код, який виконується всередині циклу, називають тілом циклу. Відомі такі види циклів:
  1. Цикли з передумовою: умова виконання визначається перед першою ітерацією.

  2. Цикли з післяумовою: умова виконання визначається після першої ітерації (тому вони завжди виконуються мінімум один раз). Корисні, коли потрібно виконувати якусь дію, поки не реалізується якась умова: наприклад, зчитувати введення користувача, поки він не введе слово "stop".

  3. Цикли з лічильником: кількість ітерацій визначається змодельованим лічильником. В умові циклу задається його початкове і кінцеве значення. Кожну ітерацію лічильник нарощується. Ми можемо заздалегідь визначити кількість ітерацій.

    Ці цикли бувають корисними, коли потрібно перебрати всі елементи в якійсь колекції. Цикли з лічильником називають "циклами для...". "Для кожного елемента деякої колекції здійснити такі дії".

    Допустимими є випадки, коли виконання циклу можна перервати до досягнення його умови. Наприклад, якщо у нас є колекція зі 100 чисел і нам необхідно зрозуміти, чи містить вона негативні числа. Ми можемо почати перебір усіх чисел, використовуючи цикл "для". Але коли ми знайдемо перше від'ємне число, нам не обов'язково перебирати решту чисел. Ми можемо перервати виконання циклу, якщо його подальше виконання не має сенсу. Подібні ситуації називають перериванням циклу.

  4. Безумовні цикли – цикли, які виконуються нескінченно. Наприклад: "Поки 1=1, друкувати "1=1"". Така програма буде виконуватися, поки її вручну не перервуть.

    Ці цикли теж бувають корисними, коли використовуються разом із перериванням циклу "зсередини". Використовуйте їх обережно, щоб не спровокувати зависання програми.

    Детальніше з циклами в мові програмування Java можна познайомитися на 4-му рівні курсу JavaRush. Зокрема, з циклами while і for.

Цикли в Java

Тепер розглянемо цикли в Java. У цій мові програмування їх є кілька типів:
  • while – цикл із передумовою;
  • do..while – цикл із післяумовою;
  • for – цикл із лічильником (цикл для);
  • for each... – цикл "для кожного..." - різновид for для перебирання колекції елементів.

while, do... while і for можна використовувати як безумовні цикли. Порівняти синтаксис циклів у різних мовах програмування можна на четвертому рівні навчання курсу JavaRush. Наприклад циклів for і while. Розглянемо коротко кожен із представлених типів.

Цикл while

Цей цикл у Java структурно має такий вигляд:

while (expression) {
     statement(s)
}
Тут:
  • expression – умова циклу, вираз, який має повертати boolean значення.
  • statement(s) – тіло циклу (один або більше рядків коду).
Перед кожною ітерацією буде обчислюватися значення виразу expression. Якщо результатом виразу буде true, виконується тіло циклу – statement(s). Приклад:

public class WhileExample {
    public static void main(String[] args) {
        int countDown = 10;

        while (countDown >= 0) {
            System.out.println("До старту: " + countDown);
            countDown --;
        }

        System.out.println("Поїхали!");
        
    }
}
Виведення:
До старту: 10 До старту: 9 До старту: 8 До старту: 7 До старту: 6 До старту: 5 До старту: 4 До старту: 3 До старту: 2 До старту: 1 До старту: 0 Поїхали!
Використовуючи while, можна створити нескінченний цикл:

while (true) {
    // тіло циклу
}
Щоб перервати виконання циклу, використовується оператор break. Наприклад:

public class WhileExample {
    public static void main(String[] args) {

        int count = 1;
        while (true) {
            System.out.println("Рядок №" + count);
            if (count > 3) {
                break;
            }
            count++; // Без нарощування виконання циклу буде вічним
        }

    }
}
Виведення:
Рядок №1 Рядок №2 Рядок №3 Рядок №4
Попрактикуватися в написанні своїх циклів можна вже на 4-му рівні курсу JavaRush.

Цикл do..while

Структура do... while виглядає так:

do {
     statement(s)
} while (expression);
Тут:
  • expression – умова циклу, вираз, який має повертати boolean значення.
  • statement(s) – тіло циклу (один або більше рядків коду).
На відміну від while, значення expression обчислюватиметься після кожної ітерації. Якщо результатом виразу буде true, у черговий раз виконається тіло циклу – statement(s) (як мінімум раз). Приклад:

public class DoWhileExample {
    public static void main(String[] args) {
        int count = 1;
        do {
            System.out.println("count = " + count);
            count ++;
        } while (count < 11);
    }
}
Виведення:
count = 1 count = 2 count = 3 count = 4 count = 5 count = 6 count = 7 count = 8 count = 9 count = 10

Цикл for

Цей Java-цикл має такий вигляд:

for (initialization; termination; increment) {
    statement(s)
}
Тут:
  • initialization – вираз, який ініціалізує виконання циклу. Виконання відбувається тільки раз на початку циклу. Найчастіше в цьому виразі ініціалізують лічильник циклу
  • terminationboolean вираз, який регулює закінчення виконання циклу. Якщо результат виразу дорівнюватиме false, цикл for перерветься.
  • increment – вираз, який виконується після кожної ітерації циклу. Найчастіше в цьому виразі відбувається інкрементування або декрементування змінної лічильника.
  • statement(s) – тіло циклу.
Вирази initialization, termination, increment опціональні. Якщо опустити кожне з них, ми отримаємо нескінченний цикл:

// нескінченний цикл
for ( ; ; ) {
    // код тіла циклу
}
Приклад циклу for:

public class ForExample {

    public static void main(String[] args) {
        for (int i = 1; i < 6; i++) {
            System.out.println("Рядок №" + i);
        }
    }
}
Виведення:
Рядок №1 Рядок №2 Рядок №3 Рядок №4 Рядок №5
Практикум із циклу for представлений на четвертому рівні курсу JavaRush.

Цикл for each

Цей цикл Java – різновид циклу for для ітерації колекцій і масивів. Структура for each має такий вигляд:

for (Type var : vars) {
    statement(s)
}
Тут:
  • vars – змінна, наявний список або масив
  • Type var – визначення нової змінної того ж типу (Type), що й колекція vars
Цю конструкцію можна прочитати так: "Для кожного var з vars зробити...". Припустимо, у нас є масив рядків із назв днів тижня. Виведемо кожен елемент цього масиву для друку:

public class ForExample {

    public static void main(String[] args) {
        String[] daysOfWeek =
                { "Понеділок", "Вівторок", "Середа", "Четвер", "П'ятниця", "Субота", "Неділя" };
        
        
        for (String dayOfWeek : daysOfWeek) {
            System.out.println(dayOfWeek);
        }
    }
}
Цикли Java вивчають на курсі JavaRush на четвертому рівні квесту Java Syntax. Спробуйте свої сили в розв'язанні задач за цією темою :)
Коментарі (2)
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ
Евгения Рівень 12
8 листопада 2023
Шкода немає нічого про використання змінних в середині циклу. Можливо це тому що немає жодних особливостей, але тоді я не розумію чому в мене виникає помилка.... Ініціалізую інт н всередині вайл, і потім можу зробити "ретурн н" тільки в циклі, за його межами ця н начебто не ініціалізована. Я хз як це нагуглити
Denis Рівень 92
29 травня 2023
Це ж, наче, помилка компіляції повинна бути:

String[] daysOfWeek = String[] daysOfWeek =
                { "Понеділок", "Вівторок", "Середа", "Четвер", "П'ятниця", "Субота", "Неділя" };