Java break和continue的用法
break 关键字可以用在 for、while、do while 循环语句中,功能是跳出整个语句块,结束当前循环的执行。当然,break 语句也可用在 switch 语句中。
在循环体中使用 break 语句有两种方式:带标签和不带标签。break 语句的语法格式如下:
【实例1】不带标签的 break 语句的用法。
【实例2】 带标签的 break 语句的用法。
在循环体中使用continue语句有两种方式:带标签和不带标签。continue 语句的语法格式如下:
【实例 3】不带标签的 continue 语句的用法。
【实例 4】带标签的 continue 语句的用法。
程序的执行结果为:
在循环体中使用 break 语句有两种方式:带标签和不带标签。break 语句的语法格式如下:
break; // 不带标签 break label; // 带标签,label 是标签名不带标签的 break 语句使程序跳出所在层的循环体,而带标签的 break 语句使程序跳出标签指示的循环体。
【实例1】不带标签的 break 语句的用法。
import static java.lang.Math.sqrt; public class Test { public static void main(String[] args) { // 输出100以内的所有素数 int i; int j; int c = 0; //注释① for (i = 2; i <= 100; i++) { for (j = 2; j <= sqrt(i); j++) { //注释② if (i % j == 0) { break; } } if (j > sqrt(i)) { System.out.printf("%5d", i); // 修正了这里的n%5dn为%5d c++; // 修正了这里的C + +为c++ if (c % 5 == 0) { System.out.println(); // 换行 } } } } }运行结果为:
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97在上面的程序中,当条件 i%j==0 为 true 时,执行 break 语句,结束注释 ② 处的内层循环,返回注释 ① 处的外层循环中继续执行下一次循环。
【实例2】 带标签的 break 语句的用法。
public class Test { public static void main(String[] args) { // 添加了标签label label: for (int i = 0; i < 5; i++) { for (int j = 3; j > 0; j--) { System.out.println("i的值:" + i + ", j的值:" + j); if (i == j) { break label; } } } } }运行结果为:
i的值:0, j的值:3
i的值:0, j的值:2
i的值:0, j的值:1
i的值:1, j的值:3
i的值:1, j的值:2
i的值:1, j的值:1
continue语句
continue 语句用来结束本次循环,跳过循环体中尚未执行的语句,接着进行终止条件的判断,以决定是否继续循环。在循环体中使用continue语句有两种方式:带标签和不带标签。continue 语句的语法格式如下:
continue; continue label;
【实例 3】不带标签的 continue 语句的用法。
public class Test { public static void main(String[] args) { int[] a = new int[10]; // 数组a用来存储被删除的数(以3结尾或3的倍数) int c = 0; // 计数器,记录被删除数的个数 for (int i = 1; i <= 20; i++) { // 如果i是3的倍数或者以3结尾 if (i % 3 == 0 || i % 10 == 3) { // 将满足条件的数(即被删除的数)放入数组a中 a[c] = i; // 计数器加1 c++; // 跳过后续打印语句,直接开始下一次循环 continue; } // 输出不满足条件的数(即保留的数) System.out.print(i + " "); } System.out.println(); // 换行 // 输出被删除的数 System.out.print("被删除的数为: "); for (int j = 0; j < c; j++) { System.out.print(a[j] + " "); } System.out.println(); // 换行 } }运行结果为:
1 2 4 5 7 8 10 11 14 16 17 19 20
被删除的数为: 3 6 9 12 13 15 18
【实例 4】带标签的 continue 语句的用法。
public class Test { public static void main(String[] args) { int[][] matrix = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9}, {10, 11, 12} }; int targetValue = 5; // 要查找的目标值 int i,j; // 外层循环遍历矩阵的行,标签为outerLoop outerLoop: for (i = 0; i < matrix.length; i++) { // 内层循环遍历当前行的列 for (j = 0; j < matrix[i].length; j++) { // 如果找到目标值,则使用带标签的continue跳过当前行的剩余部分 if (matrix[i][j] == targetValue) { System.out.println("Found " + targetValue + " in row " + (i + 1) + ", skipping rest of the row."); continue outerLoop; // 跳转到outerLoop标签处,即外层循环的下一次迭代 } // 打印当前元素(非目标值) System.out.print(matrix[i][j] + " "); } System.out.println(); } } }程序中用带标签的 continue 语句来处理一个二维数组,当找到目标值 5 时,会跳过当前行的剩余部分并继续处理下一行。
程序的执行结果为:
1 2 3
4 Found 5 in row 2, skipping rest of the row.
7 8 9
10 11 12