JavaRush /Курсы /Модуль 1: Web Core /Управление циклами: break...

Управление циклами: break и continue

Модуль 1: Web Core
21 уровень , 4 лекция
Открыта

1. Оператор break: как остановить цикл досрочно

Порой в жизни (и в программах) приходится прервать дело на полпути, потому что цель уже достигнута, или, наоборот, пропустить ненужную часть работы. Вот тут и появляются на сцене наши сегодняшние герои — операторы break и continue.

  • break — как стоп-кран в поезде: резко останавливает цикл, как только встречается в теле цикла. Всё, что дальше, не выполняется, и программа выскакивает из цикла наружу.
  • continue — как кнопка "пропустить" на YouTube: мгновенно перескакивает к следующей итерации, не выполняя оставшийся код в текущем проходе цикла.

Давайте разберём их подробно, с примерами, шутками и типичными ошибками.

Синтаксис

for (let i = 0; i < 10; i++) {
    if (условие) {
        break;
    }
    // остальной код
}

Или в цикле while:

while (условие) {
    if (другое_условие) {
        break;
    }
    // остальной код
}

Пример 1: Поиск первого положительного числа в массиве

Допустим, у нас есть массив чисел, и нам нужно найти первое положительное число и вывести его. Как только нашли — дальше искать не нужно!

const numbers = [-3, -2, -1, 0, 4, 7, 10, -5];

for (let i = 0; i < numbers.length; i++) {
    if (numbers[i] > 0) {
        console.log("Первое положительное число:", numbers[i]);
        break; // Дальше цикл не идёт, мы нашли, что искали!
    }
}

Что происходит?
Цикл перебирает элементы массива. Как только встречается число больше нуля, срабатывает break — цикл сразу завершается.

Пример 2: Поиск индекса элемента

Пусть нам нужно найти индекс элемента со значением 42:

const arr = [10, 25, 42, 17, 8];

let foundIndex = -1;
for (let i = 0; i < arr.length; i++) {
    if (arr[i] === 42) {
        foundIndex = i;
        break;
    }
}
console.log("Индекс элемента 42:", foundIndex); // 2

Если элемент не найден — переменная foundIndex останется -1.

Пример 3: Использование с циклом while

let i = 0;
while (i < numbers.length) {
    if (numbers[i] === 0) {
        console.log("Встретили ноль! Останавливаемся.");
        break;
    }
    i++;
}

Вложенные циклы и break

break останавливает только тот цикл, в котором он написан!

for (let i = 0; i < 3; i++) {
    for (let j = 0; j < 3; j++) {
        if (j === 1) break; // Выйдет только из внутреннего цикла!
        console.log(`i=${i}, j=${j}`);
    }
}

Вывод:

i=0, j=0
i=1, j=0
i=2, j=0

Как только j становится 1, внутренний цикл завершает текущий проход, но внешний продолжает работать.

2. Оператор continue: пропустить итерацию

Синтаксис

for (let i = 0; i < 10; i++) {
    if (условие) {
        continue;
    }
    // этот код выполняется только если не было continue
}

Пример 1: Пропуск чётных чисел

Допустим, надо вывести все нечётные числа массива:

const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9];

for (let i = 0; i < numbers.length; i++) {
    if (numbers[i] % 2 === 0) continue; // Пропускаем чётные числа
    console.log(numbers[i]);
}

Результат:

1
3
5
7
9

Пример 2: Пропуск пустых строк

Пусть у нас массив строк, и мы хотим вывести только непустые:

const names = ["Аня", "", "Борис", "", "Вика"];

for (let i = 0; i < names.length; i++) {
    if (names[i] === "") continue; // Пропускаем пустые строки
    console.log("Имя:", names[i]);
}

Пример 3: Использование с циклом while

let i = 0;
while (i < numbers.length) {
    i++;
    if (numbers[i] < 0) continue;
    console.log("Положительное число:", numbers[i]);
}

3. Применение в реальном приложении

Давайте доработаем ваше учебное приложение — например, пользователь вводит несколько чисел, а мы выводим только первые три положительных числа, которые он ввёл. Как это реализовать?

const inputNumbers = [0, -5, 2, 4, -1, 8, -3, 10];
let count = 0;

for (let i = 0; i < inputNumbers.length; i++) {
    if (inputNumbers[i] <= 0) continue; // Пропускаем неположительные числа

    console.log("Положительное число:", inputNumbers[i]);
    count++;

    if (count === 3) break; // Нашли три — хватит!
}

Результат:

Положительное число: 2
Положительное число: 4
Положительное число: 8

4. Типичные ошибки при использовании break и continue

Ошибка №1: Ожидание, что break завершит все циклы сразу.
break выходит только из того цикла, где он находится. Если у вас вложенные циклы, внешний продолжит работу. Если хотите выйти сразу из нескольких — используйте метки (но лучше пересмотреть логику!).

Ошибка №2: Забытая инкрементация переменной цикла после continue в while.
В цикле while, если после проверки условия вы делаете continue, не забывайте увеличить счётчик до этого! Иначе цикл может стать вечным.

let i = 0;
while (i < 5) {
    if (i === 2) continue; // ОПАСНО: i не увеличивается, вечный цикл!
    i++;
}

Правильно:

let i = 0;
while (i < 5) {
    if (i === 2) {
        i++; // сначала увеличиваем, потом пропускаем
        continue;
    }
    i++;
}

Ошибка №3: Использование break и continue вне цикла.
Они работают только внутри циклов (for, while, do...while). Вне цикла — будет ошибка синтаксиса.

Ошибка №4: Неочевидная логика после continue.
Всё, что написано после continue в теле цикла, не будет выполняться на этой итерации. Это может привести к неожиданным результатам, если вы рассчитываете на выполнение этого кода.

Ошибка №5: Использование break вместо return в функции.
Если вы хотите завершить выполнение функции, используйте return, а не break. break работает только для циклов.

1
Задача
Модуль 1: Web Core, 21 уровень, 4 лекция
Недоступна
Несколько обработчиков
Несколько обработчиков
1
Задача
Модуль 1: Web Core, 21 уровень, 4 лекция
Недоступна
Удаление обработчика
Удаление обработчика
1
Опрос
DOM-элементы, 21 уровень, 4 лекция
Недоступен
DOM-элементы
DOM-элементы
Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ