Java break和continue的用法
break 关键字可以用在 for、while、do while 循环语句中,功能是跳出整个语句块,结束当前循环的执行。当然,break 语句也可用在 switch 语句中。
在循环体中使用 break 语句有两种方式:带标签和不带标签。break 语句的语法格式如下:
【实例1】不带标签的 break 语句的用法。
运行结果为:
【实例2】 带标签的 break 语句的用法。
运行结果为:
在循环体中使用continue语句有两种方式:带标签和不带标签。continue 语句的语法格式如下:
【实例 3】不带标签的 continue 语句的用法。
运行结果为:
【实例 4】带标签的 continue 语句的用法。
程序中用带标签的 continue 语句来处理一个二维数组,当找到目标值 5 时,会跳过当前行的剩余部分并继续处理下一行。
程序的执行结果为:
在循环体中使用 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();
- }
- }
- }
程序的执行结果为:
1 2 3
4 Found 5 in row 2, skipping rest of the row.
7 8 9
10 11 12