首页 > 编程笔记 > Java笔记 阅读:12

Java break和continue的用法(非常详细)

在 Java 程序中,控制循环的跳转需要使用 break 和 continue 两个关键字,这两条跳转语句的跳转效果不同,break 语句是中断循环,continue 语句是执行下一次循环。

Java break语句

使用 break 语句可以跳出 switch 结构。在循环结构中,同样也可用 break 语句跳出当前循环体,从而中断当前循环。

在 3 种循环语句中使用 break 语句的形式如下图所示:


图 1 break语句的使用形式

【实例】输出 1~20 出现的第一个偶数。
创建 BreakTest 类,循环输出 1~20 的偶数值,在遇到第一个偶数时,使用 break 语句结束循环。
public class BreakTest {
    public static void main(String[] args) {
        for (int i = 1; i < 20; i++) {
            if (i % 2 == 0) {
                System.out.println(i); // 输出 i 的值
                break; // 结束循环
            }
        }
        System.out.println("---end---"); // 结束时输出一行文字
    }
}
运行结果如下:

2
---end---


注意,在循环嵌套情况下,break 语句将只会使程序流程跳出包含它的最内层的循环结构,即只跳出一层循环。如果想让 break 跳出外层循环,Java 提供了“标签”的功能,语法如下:
标签名: 循环体{
    break 标签名;
}

带有标签的 break 可以指定跳出的循环,这个循环可以是内层循环,也可以是外层循环。

【实例】使用标签让 break 结束外层循环。
创建 BreakInsideNested 类,在该类中写两层 for 循环,第一层 for 语句循环 3 次,第二层 for 语句循环 5 次。当第二层 for 语句循环至第 4 次时,强行用 break 中断循环。输出程序执行时外层循环和内层循环各循环了多少次。
public class BreakInsideNested {
    public static void main(String[] args) {
        for (int i = 1; i <= 3; i++) { // 外层循环
            for (int j = 1; j <= 5; j++) { // 内层循环
                if (j == 4) { // 内层循环至第4次时就结束
                    break;
                }
                System.out.println("i=" + i + " j=" + j);
            }
        }
    }
}
运行结果如下:

i=1 j=1
i=1 j=2
i=1 j=3
i=2 j=1
i=2 j=2
i=2 j=3
i=3 j=1
i=3 j=2
i=3 j=3

从这个运行结果中可以看到以下内容:
现在修改这段代码,给外层循环添加一个名为 Loop 的标签,让内层循环结束外层循环,再查看运行结果。
public class BreakInsideNested {
    public static void main(String[] args) {
        Loop: for (int i = 1; i <= 3; i++) { // 外层循环,添加了标签
            for (int j = 1; j <= 5; j++) { // 内层循环
                if (j == 4) { // 内层循环至第4次时就结束
                    break Loop; // 结束外层循环
                }
                System.out.println("i=" + i + " j=" + j);
            }
        }
    }
}
运行结果如下:

i=1 j=1
i=1 j=2
i=1 j=3

从这个结果中可以看出,当 j 的值等于 4 时,直接结束外层循环,i 的值不再增加。

Java continue语句

continue 语句是针对 break 语句的补充。continue 不是立即跳出循环体,而是跳过本次循环,回到循环的条件测试部分,重新开始执行循环。

在 for 循环语句中遇到 continue 后,首先执行循环的增量部分,然后进行条件测试。在 while 和 do…while 循环中,continue 语句使控制直接回到条件测试部分。

在 3 种循环语句中,使用 continue 语句的形式如下图所示:


图 2 continue语句的使用形式

【实例】输出 1~20 的奇数。
创建 ContinueTest 类,编写一个 for 循环从 1 循环至 20,如果当前循环的次数为偶数,则使用 continue 语句跳过循环。
public class ContinueTest {
    public static void main(String[] args) {
        for (int i = 1; i <= 20; i++) { // 从1迭代到20
            if (i % 2 == 0) { // 如果 i 是偶数
                continue; // 跳到下一循环
            }
            System.out.println(i); // 输出 i 的值
        }
    }
}
运行结果如下:

1
3
5
7
9
11
13
15
17
19


与 break 语句一样,continue 也支持标签功能,语法如下:
标签名 : 循环体{
  continue 标签名;
}

例如:
public class ContinueLabelExample {
    public static void main(String[] args) {
        outerLoop: // 外层循环的标签
        for (int i = 0; i < 5; i++) {
            System.out.println("外层循环 i = " + i);
            for (int j = 0; j < 5; j++) {
                System.out.println("  内层循环 j = " + j);
                if (j == 2) {
                    continue outerLoop; // 如果 j 等于 2,跳过外层循环的剩余代码
                }
                // 内层循环的其他代码
            }
            // 外层循环的剩余代码
        }
    }
}
在这个例子中,我们有两个嵌套的 for 循环,外层循环变量 i 从 0 迭代到 4,内层循环变量 j 也从 0 迭代到 4。外层循环被标记为 outerLoop。如果内层循环中的 j 等于 2,我们使用 continue outerLoop; 语句跳过外层循环的当前迭代的剩余部分,并开始外层循环的下一次迭代。

输出结果为:
外层循环 i = 0
  内层循环 j = 0
  内层循环 j = 1
外层循环 i = 1
  内层循环 j = 0
  内层循环 j = 1
外层循环 i = 2
  内层循环 j = 0
  内层循环 j = 1
外层循环 i = 3
  内层循环 j = 0
  内层循环 j = 1
外层循环 i = 4
  内层循环 j = 0
  内层循环 j = 1
可以看到,当 j 等于 2 时,内层循环的剩余部分被跳过,并且外层循环继续进行下一次迭代。

相关文章