Циклы


В Java есть два типа циклов: forи while.

Для

Цикл for состоит из трех частей:

for (int i = 0; i < 3; i++) {}

Первый раздел запускается один раз, когда мы входим в цикл.

Вторая секция - это привратник, если он возвращается true, мы запускаем операторы в цикле, если он возвращается false, мы выходим из цикла. Он запускается сразу после первого раздела в первый раз, затем каждый раз, когда цикл завершается и запускается третий раздел.

Третий раздел - это последний оператор, который будет выполняться каждый раз при запуске цикла.

Итак, в случае, который мы только что видели, цикл будет выполнен 3 раза. Вот порядок команд:

int i = 0;
i < 3 // 0 < 3 = true
      // Inside of loop
i++ // i is now 1
i < 3 // 1 < 3 = true
      // Inside of loop
i++ // i is now 2
i < 3 // 2 < 3 = true
      // Inside of loop
i++ // i is now 3
i < 3 // 3 < 3 = false
      // Loop is done...

Мы можем опустить первую и третью часть цикла (хотя это будет странно), и цикл все равно будет работать:

for (;i < 5;) {}

В случаях, когда мы хотим использовать цикл, который выглядит так, мы используем whileцикл

В то время как

Синтаксис очень похож на предыдущий, поскольку мы рассмотрели:

while (condition) {}

Условие будет выполняться в первый раз при входе и каждый раз при завершении цикла. Если он вернет false, цикл не запустится.

Если мы хотим, чтобы цикл всегда выполнялся хотя бы один, мы можем использовать do-while

do {

} while(condition);

Обратите внимание на значок ;в конце «делай-то».

Для каждого

Другая версия for - это foreach. Ключевое слово, которое мы используем, по-прежнему for, но когда мы хотим перебрать элементы внутри массива, мы можем просто использовать его:

int[] arr = {2, 0, 1, 3};
for (int el : arr) {
    System.out.println(el);
}

Это короткая версия, эквивалентная:

int[] arr = {1, 9, 9, 5};
for (int i = 0; i < arr.length; i++) {
    int el = arr[i];
    System.out.println(el);
}

Обратите внимание: если вы хотите использовать индекс элемента внутри цикла, вы должны использовать более длинную версию и не можете использовать foreach.

сломать и продолжить

Эти два ключевых слова помогают нам контролировать цикл изнутри. breakвызовет остановку цикла и сразу же перейдет к следующему оператору после цикла:

int i;
for (i = 0; i < 5; i++) {
    if (i >= 2) {
        break;
    }
    System.out.println("Yuhu");
}
System.out.println(i);
// Output:
// Yuhu
// Yuhu
// 2

continueостановит текущую итерацию и перейдет к следующей. Обратите внимание, что внутри цикла for по-прежнему будет выполняться третий раздел.

int i;
for (i = 0; i < 5; i++) {
    if (i >= 3) {
        break;
    }
    System.out.println("Yuhu");
    if (i >= 1) {
        continue;
    }
    System.out.println("Tata");
}
System.out.println(i);
// Output
// Yuhu
// Tata
// Yuhu
// Yuhu
// 3

Упражнение

Просмотрите и распечатайте все четные числа, каждое в отдельной строке, из списка номеров в том же порядке, в котором они были получены. Не печатайте в последовательности числа, идущие после 237.