控制循环的跳转需要用到 break 和 continue 两个关键字,break 语句是中断循环,continue 语句是执行下一次循环。
创建BreakTest类,循环输出1~20的偶数值,在遇到第一个偶数时,使用
break 语句结束循环:
public class BreakTest {
public static void main(String[] args) {
for(int i = 1;i < 20;i++) {
if(i%2 == 0) { //如果i是偶数
System.out.println(i); //输出i'的值
break; //结束循环
}
}
System.out.println("---end---"); //结束时输出一行文字
}
}
循环嵌套情况下,break 语句将只会使程序流程跳出包含它的最内层的循环结构,即只跳出一层循环。
如果想让 break 跳出外层循环,Java 提供了“标签”的功能:
标签名:循环体{
break 标签名;
}
标签名:任意标识符
循环体:任意循环语句
break 标签名: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=1j=1
i=1j=2
i=1j=3
i=2j=1
i=2j=2
i=2j=3
i=3j=1
i=3j=2
i=3j=3
从运行结果可以看出:
1)循环中的 if 语句判断:如果 j 等于 4 时,执行 break 语句,则中断了内层的循环,输出的 j 值最大到 3 为止;
2)外层的循环没有受到影响,输出的 i 值最大为 3,正是 for 循环设定的最大值;
修改代码,给外层循环添加一个名为 Loop 的标签,让内层循环结束 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=1j=1
i=1j=2
i=1j=3
当 j 的值等于 4 时,直接结束外层循环,i 的值不再增加。
continue 语句
continue 语句不是立即跳出循环体,而是跳过本次循环,回到循环的条件测试部分,重新开始执行循环。
创建ContinueTest类,编写 for 循环从 1 循环至 20,如果当前循环的次数为偶数,则使用 continue 语句跳过循环:
public class ContinueTest {
public static void main(String[] args) {
for(int i = 1;i <= 20;i++) {
if(i % 2 == 0) { //如果 i 是偶数
continue; //跳到下一循环
}
System.out.println(i); //输出 i 的值
}
}
}
输出:
1
3
5
7
9
11
13
15
17
19
与 break 一样,continue 也支持标签功能:
标签名:循环体{
continue 标签名;
}
标签名:任意标识符
循环体:任意循环语句
continue 标签名:continue 跳出指定的循环体,此循环体的标签名必须与 continue 的标签名一致.