在本教程中,您将在示例的帮助下了解Java中的continue语句和标记为continue的语句。
在处理循环时,有时需要跳过循环中的某些语句,或者在不检查测试表达式的情况下立即终止循环。
在这种情况下,将使用break和continue语句。要了解该break语句,请访问Java break。
Java中的continue语句跳过循环的当前迭代(for,while,do…while等),程序的控制权移到循环的末尾。并计算循环的测试表达式。
对于for循环,update语句在测试表达式之前执行。
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循环的工作原理,请访问Java for循环。在这里,请注意以下语句:
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语句,称为标记contine。
如上图所示,我们使用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
在上面的示例中,使用带标签的continue语句跳过标记为first的循环的当前迭代。
if (i==3 || j==2) continue first;
在这里,我们可以看到最外层的for循环被标记为first,
first: for (int i = 1; i < 6; ++i) {..}
因此,如果i的值为3或j的值为2,则跳过外部for循环的迭代。
注意:通常不建议使用带标签的continue,因为这会使代码难以理解。如果您处于必须使用标记为continue的情况下,请重构代码并尝试以不同的方式解决它,以使其更具可读性。