这标题要解决的问题太容易get了,课代表来划重点: “多重循环”,绝大多数初学者都以为直接在循环里边加break语句就可以终止所有循环,这么一说break真是无敌了呀,很可惜“我以为” 而不是“实践以为”呢,那怎么才能解决退出多重循环呢?
首先,让我们回顾两个知识点 “continue” 与 “break” 语句二者的区别。
- break是用于终止本轮所有次循环,即不执行本次循环中break后面的语句,直接跳出循环。
- continue是用于终止本轮本次循环,即本次循环中的continue后面的代码不执行,进行下一次循环的路口判断。
下面我就用代码证实理解二者的概念。
【代码】
//continue语句
public class Exit {
public static void main(String[] args) {
for(int i = 0; i < 4; i ++) {
System.out.println("i = " +i);
if(i == 2) {
continue;
}
}
}
}
运行结果:
i = 0
i = 1
i = 2
i = 3
//break语句的单层循环
public class Exit {
public static void main(String[] args) {
for(int i = 0; i < 4; i ++) {
System.out.println("i = " +i);
if(i == 2) {
break;
}
}
}
}
运行结果:
i = 0
i = 1
i = 2
对比下break语句的多重循环的结果
【代码】
public class Exit {
public static void main(String[] args) {
for(int i = 0; i < 4; i ++) {
for(int j = 0; j < 4; j ++) {
System.out.println("i = " +i + ",j =" + j);
if(i == 2 && j == 2) {
break;
}
}
}
}
}
运行结果:
i = 0,j = 0
i = 0,j = 1
i = 0,j = 2
i = 0,j = 3
i = 1,j = 0
i = 1,j = 1
i = 1,j = 2
i = 1,j = 3
i = 2,j = 0
i = 2,j = 1
i = 2,j = 2
i = 3,j = 0
i = 3,j = 1
i = 3,j = 2
i = 3,j = 3
从上面运行结果可以看出i=2,j=3是没有出现的,说明内层循环结束,而外层循环继续。
【小结】无论是单层循环还是多重循环,continue语句只能终止本次循环,继续回到该循环的初始位置;break语句只能终止并跳出本次循环,回到最上层循环或者继续执行循环体之外的语句。
说到这儿,已经把continue 与 break语句的区别都理着透彻了,你掌握了吗?
接下来就回到起初的问题,既然break语句只能退出本次循环,那该如何退出多重循环呢?
我之前写过一篇文章,总结了常见的冒号用法,其中也讲解了 多重循环的跳转标记,你不妨点进去瞧瞧,收获颇多耶。
采取的方法就是 利用“ 标记名称 :for / while ” 的表达式 ,即可给定循环起一个外号,于是语句“break 标记名称 ”便实现跳出指定循环的需求。
【代码】
public class Exit {
public static void main(String[] args) {
loop: for(int i = 0; i < 4; i ++) {
for(int j = 0; j < 4; j ++) {
System.out.println("i = " +i + ",j =" + j);
if(i == 2 && j == 2) {
break loop;
}
}
}
}
}
运行结果:
i = 0,j =0
i = 0,j =1
i = 0,j =2
i = 0,j =3
i = 1,j =0
i = 1,j =1
i = 1,j =2
i = 1,j =3
i = 2,j =0
i = 2,j =1
i = 2,j =2
总结:无论两层还是三层甚至多层循环,想退出哪层 就在该层前面给其取外号即可。