使用循环时,有时希望跳过循环内的某些语句或立即终止循环而不检查测试表达式。
在这种情况下,将使用break
和continue
语句。要了解break
语句,请访问Java break。
Java中的continue
语句跳过循环的当前迭代( for
, while
, do...while
等),并且程序的控制移至循环的结尾。并且,评估循环的测试表达式。
对于for
循环,update语句在测试表达式之前执行。
continue
语句几乎总是用在决策语句中(如果…其他语句)。它的语法是:
continue;
连续语句如何工作?
示例1:Java继续语句
class Main {
public static void main(String[] args) {
// for loop
for (int i = 1; i <= 10; ++i) {
// if value of i is between 4 and 9, continue is executed
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的输出。
示例2:Java继续语句
下面的程序计算用户输入的5个正数的总和。如果用户输入负数或零,则将其从计算中跳过。
为了接受用户的输入,我们使用了Scanner
对象。要了解有关Scanner
更多信息,请访问Java Scanner。
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Double number, sum = 0.0;
// create an object of Scanner
Scanner input = new Scanner(System.in);
for (int i = 1; i < 6; ++i) {
System.out.print("Enter number " + i + " : ");
// takes double type input from the user
number = input.nextDouble();
// if number is negative, the iteration is skipped
if (number <= 0.0) {
continue;
}
sum += number;
}
System.out.println("Sum = " + sum);
input.close();
}
}
输出 :
Enter number 1: 2.2
Enter number 2: 5.6
Enter number 3: 0
Enter number 4: -2.4
Enter number 5: -3
Sum = 7.8
在上面的程序中,请注意以下行:
if (number < 0.0) {
continue;
}
这意味着当用户输入负数时,将跳过循环的当前迭代。然后开始下一次迭代。
Java继续和嵌套循环
在嵌套循环的情况下, continue
跳过最内层循环的当前迭代。
标有继续声明
到目前为止,我们已经使用了未标记的continue
语句。它用于终止最内部的循环和switch
语句。但是,Java中还有另一种形式的continue
语句,称为labeled contine
。
我们也可以使用labeled continue
语句来终止最外面的循环。
如您在上图中所看到的,我们已经使用标签标识符来指定外部循环。现在,请注意如何使用continue
语句( continue label;
)。
在这里, continue
语句正在跳过带标签的语句的当前迭代(即外循环)。然后,程序的控制转到标记语句的下一个迭代(外循环)
示例3:标记为continue的语句
class LabeledContinue {
public static void main(String[] args) {
// the outer for loop is labeled as label
first:
for (int i = 1; i < 6; ++i) {
for (int j = 1; j < 5; ++j) {
if (i == 3 || j == 2)
// skips the iteration of label (outer for loop)
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
循环的迭代。
注意 :通常不建议使用带标签的continue
因为这会使您的代码难以理解。如果你是在你必须使用标记的情况continue
,重构代码,并试图解决它以不同的方式,以使其更具可读性。