JavaRush /Курсы /JAVA 25 SELF /Управление циклом: операторы break и continue

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

JAVA 25 SELF
4 уровень , 4 лекция
Открыта

1. Введение

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

Операторы break и continue в Java предназначены именно для этого. Давайте разберёмся, как они работают и для чего пригодятся в реальных задачах.

2. Оператор break: "Стоп, машина!"

Теория и синтаксис

Оператор break используется для немедленного выхода из цикла, где бы вы ни находились в его теле. Как только исполнение программы доходит до break, цикл тут же завершает работу, и выполнение продолжается с первой строки кода после цикла.


while (условие)
{
    if (какое-то_условие)
    {
        break;
    }
    // остальной код цикла
}
Использование break в цикле while

То же самое работает и для for, и для do-while:

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

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

Число является простым, если оно делится только на 1 и на себя. Нам нужно проверить число на простоту: перебрать все потенциальные делители от 2 до n-1. Если выяснилось, что наше число делится на делитель, то дальше проверять не нужно — число не простое! Можно заканчивать цикл.

Пример:

int number = 111;
boolean found = false;
for (int i = 2; i < number; i++)
{
    if (number % i == 0)
    {
        found = true;
        System.out.println("Нашли делитель " + i );
        break; // Останавливаем цикл, ничего больше искать не нужно!                
    }    
}

if (!found)
{
    System.out.println("Делитель не найден - число простое.");
}

Пример 2: валидация пользовательского ввода

Давайте напишем небольшое приложение, например, интерактивную анкету для сбора данных:

while (true)
{
    System.out.print("Введите свой возраст: ");

    if (console.hasNextInt())
    {
        int age = console.nextInt();
        if (age > 0)
        {
            System.out.println("Отлично! Ваш возраст: " + age);
            break; // данные корректные — выходим
        }
        else
        {
            System.out.println("Ошибка! Введите положительный возраст.");
        }
    }
    else
    {
        System.out.println("Ошибка! Введите число.");
        console.nextLine(); // съедаем некорректный ввод
    }
}

Зачем это нужно:
Иногда нужно крутить цикл бесконечно (или очень долго), пока пользователь не введёт корректные данные. Как только произошло событие, которое нас устраивает — применяем break и окончательно выходим из цикла.

3. Оператор continue: "Следующий, пожалуйста!"

Теория и синтаксис

В отличие от break, оператор continue не завершает весь цикл, а лишь прерывает текущую итерацию: всё, что написано после continue в теле цикла, НЕ выполняется — происходит переход к следующей итерации.


for (int i = 0; i < 10; i++)
{
    if (условие)
    {
        continue;
    }
    // эта часть выполнится только если continue не сработал
}
Использование continue в цикле for

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

Представьте, что вам нужно вывести только нечётные числа из диапазона. Чётные надо пропускать.


for (int i = 1; i <= 10; i++)
{
    if (i % 2 == 0)
    {
        continue; // если число чётное — пропускаем всё, что ниже!
    }
    System.out.println("Нечетное число: " + i);
}
Пропуск чётных чисел с помощью continue

Что происходит:
Когда i = 2, 4, 6... цикл встречает continue и сразу перескакивает к следующей итерации, не выполняя System.out.println.

Визуализация работы по шагам:

i i % 2 == 0 Действие
1 false print, continue нет
2 true continue, print нет
3 false print, continue нет
... ... ...

Операторы break и continue используются очень часто. Фактически в каждом втором цикле. Вам понравится с ними работать.

1
Задача
JAVA 25 SELF, 4 уровень, 4 лекция
Недоступна
Поиск секретного кода 🔐
Поиск секретного кода 🔐
1
Задача
JAVA 25 SELF, 4 уровень, 4 лекция
Недоступна
Отбор качественных товаров 📦
Отбор качественных товаров 📦
1
Задача
JAVA 25 SELF, 4 уровень, 4 лекция
Недоступна
Проверка на простое число ❓
Проверка на простое число ❓
1
Задача
JAVA 25 SELF, 4 уровень, 4 лекция
Недоступна
Суммирование ежедневных продаж 💰
Суммирование ежедневных продаж 💰
Комментарии (30)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Gans Electro Уровень 42
24 мая 2026
Про nextInt() и nextLine():

501 320 420 124
1001 23451 12334
nextLine() читает всю строку: "501 320 420 124" nextInt() читает по одному числу 501. Команда:

int a = sc.nextInt(); //будет 501 
sc.nextLine()
int b = sc.nextInt(); //будет 1001

int a = sc.nextInt(); //будет 501 
int x = sc.nexLine(); //будет 320 (Хотя не уверен на счет пробела)
sc.nextLine()
int b = sc. nextInt(); //будет 1001
наверное даже если будет (Проверьте, я помню так):

501 Java true 124

int a = sc.nextInt(); //будет 501 
int x = sc.nexLine(); //прочитает число 124
Anonymous #6476282 Уровень 4
15 марта 2026
Блин запутали с этой фразой 😁 что за флаг))) // Устанавливаем флаг, что число не простое
Магомед Уровень 6
4 июля 2026
да блин согласен, не могли написать булевая перменная
Кэрривайт Уровень 3
15 февраля 2026
Цикл for(element : collection) в Java (расширенный цикл for, for-each) — это конструкция, которая позволяет перебирать элементы коллекции или массива без использования индексов. Подробнее в статье Что такое foreach в Java?: https://javarush.com/groups/posts/for-each-java
Paulina Уровень 5
14 февраля 2026
Доброго дня! Подскажите, что значит "съедаем некорректный ввод" в примере 2? Почему мы добавляем console.nextLine(), если ожидаем число, а не строку?

   else
    {
        System.out.println("Ошибка! Введите число.");
        console.nextLine(); // съедаем некорректный ввод
KEN Уровень 13
20 марта 2026
Добрый день! Мне стало любопытно что это значит, хотя я и до этого уже знал примерно, как это работает, но в общем суть такая. Когда вы введёте текст в этой программе, а я попрошу заметить, что у вас цикл бесконечный while(true), единственное место где у вас стоит break это 11 строка, то есть вам нужно ввести положительное число и не текст. Дак вот если убрать строку console.nextLine(); и запустить программу без этой строки и ввести текст, букву или что угодно только не число, программу уйдет в вечный цикл и будет писать: Введите свой возраст: Ошибка! Введите число. Введите свой возраст: Ошибка! Введите число. Введите свой возраст: Ошибка! Введите число. Введите свой возраст: Ошибка! Введите число. И так далее... console.nextLine(); - эта строка просто очищает поток или простыми словами строку ввода, и не дает программе попасть в вечный цикл.
Gans Electro Уровень 42
24 мая 2026
Дело в том что nextInt() или другие команды не читают всю строку. Если будет

501 320 420 124
1001 23451 12334
в одной строке то nexInt() будет читать по одному числу. (Не уверен на счет пробелов). Если один раз сделать 501 и написать nextLine() то прочитается только 501 и программа пойдет дальше к строке с 1001 23451 ...
11 февраля 2026
Четвертая задача не проходит проверку даже в случае, если проверяешь предложенное решение) . В решении используются переменные int, а проверка предлагает использовать double.
KEN Уровень 13
20 марта 2026
Scanner console = new Scanner(System.in); int input; int sum = 0; do { input = console.nextInt(); if (input >= 0) { sum = sum + input; } } while (!(input < 0)); System.out.println(sum); } } Хм.. странно всё работает как часики🧐
Андрей Уровень 27
4 февраля 2026
Добрый день! Про объявления массивов, и их перебор в цикле For в предыдущих лекциях вроде ничего не говорилось. Может что-то добавить в лекции про целые числа?
KEN Уровень 13
20 марта 2026
Возможно они рассчитывают, что вы уже достаточно узнали про то как работают циклы и сами разберётесь с этим примером. Я удаляю код в заданиях, что бы самому написать его, только шапку оставляю, и в этот раз тоже удалил, но прочитав задание, увидел, что речь идет про массивы и решил, что нужно вернуть код, который я удалил. И действительно, было весьма интересно увидеть, как в задании красовался массив и работа с ним в цикле. Благо разработчики написали уже готовый код, осталось только чуть чуть самому подумать😎
Anthony L. Gershman Уровень 20
15 января 2026
1. Здесь введён цикл for(element : collection), в то время, как рассмотрен только for(init;cond;action). 2. С определённого момента Ctrl+стрелки стали работать как перемещение между лекциями, что свело удобство написания комментария к 1% от прежнего.
Anonymous #3421789 Уровень 13
11 января 2026
Зачем проверять до n-1, если достаточно до n/2+1???
Anonymous #6413862 Уровень 7
24 октября 2025
это нормально что из ниоткуда взялись hasNextInt и массивы??? мб стоит как-то постепенно рассказывать о них?
Stanislav Muzulev Уровень 21
4 января 2026
Этот курс как мне кажется не совсем с нуля лучше проходить, хотя бы Core нужно пройти из старого по Java)
Peter Уровень 6
17 января 2026
Это тактика javarush. Они во всех курсах периодически вводят чтото новое, что не проходилось. Курс расчитан на то, что вы пользуетесь и другими источниками и книгами и видео и прочее, так что всё нормально, привыкайте.
Victor Уровень 39
27 января 2026
То ли ещё будет. В целом можно сказать - будут предлагать изучать ВСЁ самостоятельно, обозначая только общее направление.
Кэрривайт Уровень 3
14 февраля 2026
Про hasNextInt и другие методы класса Scanner можно прочитать здесь: https://javarush.com/groups/posts/klass-scanner
Кэрривайт Уровень 3
14 февраля 2026
Про массивы можно прочитать тут: https://javarush.com/quests/lectures/questsyntaxpro.level05.lecture00
Nemo Уровень 37
13 марта 2026
ты и так все самостоятельно изучаешь, просто тебе на блюдечке с голубой каемочкой приносят документацию, можно конечно пойти jls читать, там понятнее все будет)
Oreshkin Andrey Уровень 5
8 октября 2025
массив и isPrime - стали полной неожиданностью для меня конечно