在嵌套循环中,要一次性跳出所有的嵌套循环的时,通常会用到label。
普通的break只能跳出一层,而不能跳出所有的循环。
这里给出两个例子来说明:
第一个,用普通的break
public class LoopDemo01 {
public static void main(String[] args) {
for (int i = 0; i < 2; i++) {
System.out.println("运行第一重循环" + i);
for (int j = 0; j < 2; j++) {
System.out.println("运行第二重循环" + j);
for (int k = 0; k < 2; k++) {
if(k==1){
break;
}
System.out.println("运行第三重循环" + k);
System.out.println("******************************");
}
}
}
}
}
运行的结果是:
运行第一重循环0
运行第二重循环0
运行第三重循环0
运行第二重循环1
运行第三重循环0
运行第一重循环1
运行第二重循环0
运行第三重循环0
运行第二重循环1
运行第三重循环0
第二个,用label标签
public class LoopDemo02 {
public static void main(String[] args) {
loop: for (int i = 0; i < 2; i++) {
System.out.println("运行第一重循环" + i);
for (int j = 0; j < 2; j++) {
System.out.println("运行第二重循环" + j);
for (int k = 0; k < 2; k++) {
if (k == 1) {
System.out.println("跳出多重循环");
break loop;
}
System.out.println("运行第三重循环" + k);
System.out.println("**************************");
}
}
}
}
}
运行的结果是:
运行第一重循环0
运行第二重循环0
运行第三重循环0
跳出多重循环
这里再补充一条用法,label可以用来标记下一步循环,计数变量+1:
/*
* 打印出1000以内所有的质数
*/
public class zhiShu1000 {
public static void main(String[] args){
//方案一
for(int num = 2;num<=1000;num++){
boolean isPrime = true;
for(int i=2;i<num/2;i++){
if(num%i==0){
isPrime = false;
break;
}
}
if(isPrime){
System.out.println(num+"是质数!");
}
}
//方案二
nextNum:for(int num=2 ;num <= 1000;num++){
for(int i=2 ; i<=num/2;i++){
if(num % i==0){//如果有约数就取下一个num
continue nextNum;
}
}
System.out.println(num + "是质数!");
}
}
}