Загрузка...

break и continue в Java

Прокрутите i от 1 до 5. Когда i станет равен 3, выйдите из цикла через break до печати. На экране должны остаться только две строки: 1, затем 2. Эта ранняя остановка — один инструмент на этой странице. Другой инструмент — continue: он пропускает один проход и продолжает цикл, так что 3 не печатается, а 4 и 5 всё ещё печатаются.

break рано завершает цикл

Создайте небольшой файл программы с именем Skip.java. public class в первой строке должен совпадать с именем файла: public class Skip. Не оставляйте в этом файле старое имя класса Pulse или Beat; компилятор ждёт, что имя класса и имя файла совпадут.
Внутри main напишите for, который умеет остановиться раньше:
for (int i = 1; i <= 5; i = i + 1) {
if (i == 3) {
break;
}
System.out.println(i);
}
Заголовок for той же формы, что вы уже знаете: старт, проверка, шаг. Внутри фигурных скобок if спрашивает, равен ли i трём. Когда это true, выполняется break;. break сразу покидает весь цикл for. println под if в этом проходе не выполняется, и i внутри этого цикла не доходит до 4 или 5. Когда i равен 1 или 2, if равен false, поэтому println(i) пишет число. Сохраните файл перед компиляцией.

Программа, которая останавливается на break

Это версия, которую вы компилируете первой.

break когда i равен 3

java
public class Skip {
    public static void main(String[] args) {
        for (int i = 1; i <= 5; i = i + 1) {
            if (i == 3) {
                break;
            }
            System.out.println(i);
        }
    }
}

Из папки, где лежит Skip.java, выполните javac Skip.java. Когда круглые скобки, фигурные скобки и точки с запятой совпадают, javac не пишет ни одной своей строки. Затем выполните java Skip — не java Skip.java. Окончание .java у второй команды уберите. Те же две команды работают и в Windows, и в macOS; эта страница не требует другого написания оболочки ни для одной из систем. Программа должна напечатать две строки и остановиться: 1, затем 2. Она не ждёт, пока вы что‑то наберёте. Если терминал ждёт ввода с клавиатуры, в файле ещё остался вызов nextLine из старого упражнения. Удалите этот вызов и оставьте for вместе с break выше. Из‑за неверной строки на экране новый JDK ставить не нужно.

Пройдите запуск с break по порядку. i начинается с 1. if равен false, поэтому println пишет 1. Шаг сохраняет 2. if снова false, поэтому println пишет 2. Шаг сохраняет 3. Теперь i == 3 истинно, поэтому выполняется break и for заканчивается. Для 3, 4 и 5 ничего не печатается. Простой цикл без break напечатал бы пять строк; break обрезал цикл после двух печатей. После break в том проходе шаг не выполняется и проверка больше не задаётся, потому что цикл уже закончен.

continue пропускает один проход

Измените тело так, чтобы continue заменил break, а println остался после if:
for (int i = 1; i <= 5; i = i + 1) {
if (i == 3) {
continue;
}
System.out.println(i);
}
Когда i равен 3, continue; пропускает остаток этого прохода — включая println — и for переходит к шагу и следующей проверке. Сам цикл не заканчивается. На экране должны быть четыре строки: 1, 2, 4 и 5. Пропуск — там, где мог бы стоять 3.

continue когда i равен 3

java
public class Skip {
    public static void main(String[] args) {
        for (int i = 1; i <= 5; i = i + 1) {
            if (i == 3) {
                continue;
            }
            System.out.println(i);
        }
    }
}

Снова скомпилируйте и запустите: javac Skip.java, затем java Skip. Вы должны увидеть четыре строки. Заголовок for вы не меняли — только break стал continue. Когда четыре строки уже видны, можете вернуть break, чтобы снова получить первое демо. Обе версии — корректный Java. Они показывают два разных ранних хода внутри одной и той же формы цикла.

Ещё раз прочитайте запуск с continue. i идёт 1, 2, 3, 4, 5. Для 1 и 2 if равен false и числа печатаются. Для 3 continue пропускает println. Для 4 и 5 числа снова печатаются. Цикл всё ещё заканчивается обычной остановкой, когда i становится 6. continue никогда не завершает for; он только пропускает остаток одного прохода. После continue for всё ещё выполняет шаг i = i + 1, поэтому счётчик двигается дальше, даже если этот проход ничего не напечатал.

📊 инструмент и экран

Инструмент при i == 3 Экран
break 1 потом 2
continue 1 потом 2 потом 4 потом 5

Используйте таблицу как проверку после запуска, а не вместо него. break оставляет две строки. continue оставляет четыре строки без 3. Если при задуманном continue всё ещё появляется 3, вероятно println стоит выше if — перенесите println ниже continue, чтобы пропуск до него доходил. Исправьте порядок, а не переустанавливайте Java.

Правила, которые держат два инструмента ясными

break и continue принадлежат телу цикла. Одинокий break; в main без окружающего for или while javac не принимает. То же верно для continue;. На этой странице if выбирает момент: когда i равен 3. Позже вы можете писать другие проверки; демо держат i == 3, чтобы изменение экрана было легко увидеть.

break — это не continue. break завершает цикл. continue пропускает один проход и остаётся в цикле. Ни один из этих инструментов здесь не тот же break со страницы switch в том виде, в каком вы его там видели — здесь окружающая структура это for. Не оставляйте в том же main while со страницы Pulse, который только считает, или for со страницы Beat без if, и не удивляйтесь, почему все числа от 1 до 5 всё ещё печатаются. main этой сессии должен держать for плюс if с break или continue.

Частая путаница — напечатать само слово: System.out.println("break");. Эта строка пишет символы break. Она не останавливает цикл. Другая путаница — поставить println(i); перед if, который держит continue, так что 3 всё ещё печатается, а потом continue выполняется, когда уже нечего пропускать. В обоих демо держите println после if. Если написать continue без окружающего цикла, javac сообщает об ошибке; то же происходит с одиноким break вне любого цикла. На форме этого урока эти два слова имеют смысл только внутри тела цикла.

Что вы теперь можете

Вы можете поставить break внутри цикла, чтобы выйти раньше, или continue, чтобы пропустить один проход и продолжить. if может выбрать, когда это случится. Следующая страница — for-each: там цикл проходит каждое значение в коллекции без того, чтобы вы писали старт, проверку и шаг вручную так же, как раньше.

🧠 Проверьте Свои Знания

Готов к Началу

Проверьте Свои Знания

Бросьте себе вызов с помощью этой интерактивной викторины и узнайте, насколько хорошо вы понимаете тему

❓
5
Вопросы
🎯
70%
Для Прохождения
♾️
∞
Время
🔄
∞
Попытки

📝 Инструкции

  • Внимательно прочитайте каждый вопрос
  • Выберите лучший ответ на каждый вопрос
  • Вы можете пересдавать тест столько раз, сколько захотите
  • Ваш прогресс будет показан вверху