Использование оператора continue

Иногда требуется, чтобы повторение цикла осуществлялось с более раннего оператора его тела. То есть на данной конкретной итерации может требоваться продолжить выполнение цикла без обработки остального кода в его теле. По сути, это означает переход в теле цикла к его окончанию. Для выполнения этого действия служит оператор continue. В циклах while и do-while оператор continue вызывает передачу управления непосредственно управляющему условному выражению цикла. В цикли for управление передается вначале итерационной части цикла for, а потом условному выражению. Во всех этих трех циклах любой промежуточный код пропускается.

Ниже приведен пример программы, в которой оператор continue используется для вывода двух чисел в каждой строке.

// Демонстрация применения оператора continue.

class Continue {
public static void main(String args[]) {
for(int i=0; i<10; i++) { System.out.print (i + " ");
if (i%2 == 0) continue;
System.out.println("");
}
}
}

В этом коде операция % служит для проверки четности значения переменной i. Если оно четное, выполнение цикл продолжается без перехода к новой строке. Программа генерирует следующий вывод:

0 1 2 3 4 5 6 7 8 9

Как и оператор break, оператор continue может содержать метку содержащего его цикла, который нужно продолжить. Ниже показан пример программы, в которой оператор continue применяется для вывода треугольной таблицы умножения чисел от 0 до 9.

// Использование оператора continue с меткой.
class ContinueLabel {
public static void main(String args[]) {
outer: for (int i=0; i<10; i++) {
for(int j=0; j<10; j++) {
if (j > i) {
System.out.println ();
continue outer;
}
System.out.print(" " + (i * j));
}
}
System.out.println();
}

В этом примере оператор continue прерывает цикл подсчета значений j и продолжает цикл со следующей итерации цикла подсчета i. Вывод этой программы имеет следующий вид:

о 0 1
0 2 4
0 3 6 9
0 4 8 12 16
0 5 10 15 20 25
0 6 12 18 24 30 36
0 7 14 21 28 35 42 49
0 8 16 24 32 40 48 56 64
0 9 18 27 36 45 54 63 72 81

Удачные применения оператора continue встречаются редко. Одна из причин состоит в том, что Java предлагает широкий выбор операторов цикла, удовлетворяющих требованиям большинства приложений. Однако в тех случаях, когда требуется более раннее начало новой итерации, оператор continue предоставляет структурированный метод выполнения этой задачи.