continue语句只能应用在for、while和do...while循环语句中,用于结束本次循环直接跳过循环体剩余的语句,进行下一次循环。
语法:
continue 标号;
标号:这是可选参数,标号有合法标识符和“:”字符组成,例如“for1:”。
continue语句有两种使用情况:
l 不带标号跳转
如果执行不带标号的continue语句,将结束本次循环,跳过循环体中剩余的没有被执行的语句,根据循环的条件判断去执行下一次循环,或者结束循环。如果是for循环还要先执行表达式3,改变循环控制变量的值。
例 实现输出100以内能被7整除的所有数,使用continue语句过滤其它的数字。
public class ContinueNull {
public static void main(String[] args) {
System.out.println("100以内能被7整除的数有:");
for (int i = 1; i < 100; i++) {
if (i % 7 != 0) { // 当i的值不能被7整除时
continue; // 结束本次循环,放弃不能被7整除的书
}
System.out.print(i + "、"); // 输出i的值
}
}
}
实例中在For循环中加入了if判断语句,如果循环控制变量i不能被7整除,就执行continue语句放弃本次循环,否则输出变量i,这时变量i肯定能被7整除。
运行结果如图1所示。
图1 实例运行结果
l 带标号跳转
这种情况下,continue语句不是跳过当前循环语句的一次循环,而是跳过标号指定的循环语句的一次循环,然后判断指定标号的循环条件,以决定是否执行标号指定的循环。
标号定义在语句之前,由一个合法的标识符和“:”字符组成。
语法:
标号:程序代码
continu语句跳转的标号用于指定循环语句,所以定义在循环语句之前。
说明:带标号的continue跳转语句经常用在多层循环中。
例 使用带标号的For循环和带标号的continue语句输出九九乘法表。
public class MultiplicationTable {
public static void main(String[] args) {
outer: for (int i = 1; i <= 9; i++) { // 第一层循环
for (int j = 1; j <= 9; j++) { // 第二次循环
if (j > i) { // 如果j>i
System.out.println(); // 换行
continue outer; // 跳过循环放弃不需要的乘数
}
String str = j + "*" + i + "=" + j * i;
System.out.print(str + "\t"); // 使用制表符格式化输出
}
System.out.println();
}
}
}
实例中在内层For循环中加入了if判断语句,如果循环控制变量j大于外层循环控制变量i,那这个数字对于乘法表的当前行就没有用了,所以输出一个空行并执行continue语句跳出到outer标识的For循环,这时内层循环语句就被结束或者说终止了,转去执行outer标识的外层循环。
运行结果如图4.24所示。
图2 实例运行结果
如果把内层循环的if语句注释掉,如下所示:
//if (j > i) { //
如果j>i
// System.out.println();
// 换行
// continue
outer; //
跳过循环放弃不需要的乘数
//}
然后再运行程序,将会输出如图3所示的结果。
图3 实例注释if语句后的运行结果