English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
В этом руководстве вы узнаете о строке continue в Java и о командах, помеченных как continue, с помощью примеров.
При обработке циклов иногда необходимо пропустить某些 строки в цикле или немедленно прекратить цикл, не проверяя выражение условия.
В этом случае будут использоваться строки break и continue. Для получения информации о строке break, пожалуйста, посетитеJava break.
Строка continue в Java пропускает текущую итерацию цикла (for, while, do…while и т.д.), и управление программой передается в конец цикла, где выполняется проверка выражения условия цикла.
Для цикла for, команда обновления выполняется до проверки выражения условия.
строка continue почти всегда используется в (строка if ... elseИспользуется в решающих выражениях. Грамматика:
continue;
class Test { public static void main(String[] args) { // Цикл for for (int i = 1; i <= 10; ++i) { // Если значение i находится между 4 и 9, выполняется continue if (i > 4 && i < 9) { continue; } System.out.println(i); } } }
Вывод:
1 2 3 4 9 10
В上面的 программе мы используем цикл for для вывода значения i в каждом итерации. Для получения информации о работе цикла for, пожалуйста, посетитеЦикл for JavaОбратите внимание на следующие строки:
if (i > 5 && i < 9) { continue; }
Это означает, что когда значение i больше 4 и меньше 9, команда print в цикле пропускается. Таким образом, значения 5, 6, 7 и 8 не выводятся.
Ниже приведен пример программы, которая вычисляет сумму 5 положительных чисел, введенных пользователем. Если пользователь вводит отрицательное или нулевое значение, его пропускают в вычислениях.
Для приема ввода пользователя мы используем объект Scanner. Для получения дополнительной информации о Scanner, пожалуйста, посетитеJava Scanner.
import java.util.Scanner; class AssignmentOperator { public static void main(String[] args) { Double number, sum = 0.0; //Создать объект Scanner Scanner input = new Scanner(System.in); for (int i = 1; i < 6; ++i) { System.out.print("Ввести цифру: "); //Принимать ввод данных типа double number = input.nextDouble(); //Если number отрицательное, пропустить итерацию if (number <= 0.0) { continue; } sum += number; } System.out.println("Sum = " + sum); } }
Вывод:
Ввести цифру: 2.2 Ввести цифру: 5.6 Ввести цифру: 0 Ввести цифру: -2.4 Ввести цифру: -3 Sum = 7.8
В этом примере обратите внимание на следующие строки:
if (number < 0.0) { continue; }
Это означает, что при вводе отрицательного числа текущий цикл пропустит текущий цикл. Начнется следующая итерация.
ЕслиВнутренние циклыв этом случае continue пропустит текущий цикл наиболее внутреннего цикла.
До сих пор мы использовали неопределенные операторы continue. Они используются для завершения работы наиболее внутреннего цикла и switch-конструкций. Однако, в Java существует и другой вид оператора continue, называемый меткой continue.
Как показано на рисунке, мы используем идентификатор label для указания внешнего цикла. Теперь обратите внимание, как используется этот оператор continue (continue label;).
Здесь оператор continue пропустит текущий цикл метки (т.е. внешнюю петлю). Затем управление передачей к следующему циклу метки (внешний цикл)
class LabeledContinue { public static void main(String[] args) { //外部for循环标记为label first: for (int i = 1; i < 6; ++i) { for (int j = 1; j < 5; ++j) { if (i == 3 || j == 2) //Пропуск итерации с меткой (внешний цикл for) continue first; System.out.println("i = " + i + "; j = " + j); } } } }
Вывод:
i = 1; j = 1 i = 2; j = 1 i = 4; j = 1 i = 5; j = 1
В примере выше используется labeled continue для пропуска текущей итерации цикла, помеченного как first.
if (i==3 || j==2) continue first;
Здесь мы можем увидеть, что внешний цикл for помечен как first,
first: for (int i = 1; i < 6; ++i) {..}
Таким образом, если значение i равно 3 или значение j равно 2, пропустить итерацию внешнего цикла for.
ВниманиеОбычно не рекомендуется использовать labeled continue, так как это делает код трудным для понимания. Если вы находитесь в ситуации, когда вам необходимо использовать labeled continue,重构代码 и постарайтесь решить проблему другим способом, чтобы сделать его более читаемым.