break和continue特殊玩法“标签”

java标签顾名思义就是在指定的地方打个标记,程序执行到某个特定的地方返回到标记处,再执行某些操作。

介绍“标签”先要介绍break和continue关键字。

break关键字:指停止当前代码块

continue关键字:指停止当次代码块

为什么说“代码块”看了下面就知道,break和continue不光可以在for,while,switch等使用。

问题1.

当内侧循环i等于2时,结束两层循环?

//设双层循环,外层i,内层j
for (int i = 0; i < 3; i++) {
    for (int j = 0; j < 3; j++) {
        if(i==2)break;   //结束两层循环
        System.out.println(j+"   "+i);
    }
}

结果发现break是无法结束两层循环,因为它只能结束内层循环。这个问题如果层数增多为三层可能更加力不从心啊!

//设双层循环,1层i,2层j, 3层k
for (int i = 0; i < 3; i++) {
    for (int j = 0; j < 3; j++) {
        for (int  k= 0; k < 3; k++) {
            if(j==2)break;   //结束2层 j 循环
            System.out.println(j+"   "+i+"  "+k);
        }
    }
}

问题2.

当2层循环j等于2时,停止1层循环接着运行

for (int i = 0; i < 3; i++) {
    for (int j = 0; j < 3; j++) {
        if(i==2)continue;  //停止当次i的循环
        System.out.println(j+"   "+i);
    }
}

同样的问题也出现在continue上,有时候算法就是这么“恶心”。同样的问题也可能出现在三层循环中

for (int i = 0; i < 3; i++) {
    for (int j = 0; j < 3; j++) {
        for (int  k= 0; k < 3; k++) {
            if(j==2)continue; //停止当前j层循环
            System.out.println(j+"   "+i+"  "+k);
        }
    }
}

提了两个问题就开始介绍“标签”了。

格式: 标签名 : 代码块

介绍:标签名   就是英文单词随意写

代码块   这个地方经测试 只要被 “{ }”包裹的代码块都可以使用。

实验:

//代码1
lable1:for (int i = 0; i < 3; i++) {
    lable2:for (int j = 0; j < 3; j++) {
        if(i==2)break  lable1; //停止lable1
        System.out.println(j+"   "+i);
    }
}

//代码2
Integer[] a ={1,2,3,4};
Integer[] b ={1,2,3,4};
lable1:for (Integer a1 : a) {
    lable2:for (Integer a2 : b) {
        if(a1==1)break lable1; //停止lable1
    }
}

//代码3
Integer a=1;
boolean c=true;
boolean d=true;
lable1:while (c) {
    lable2:while (d) {
        a++;
        if(a==3)break lable1; //停止lable1
        System.out.println(a);
    }
}

//代码4  重点介绍
Integer a= 1;
label1:{
    System.out.println(a++);
    if(a==2) break label1; //停止lable1
}

重点介绍代码4,为什么呢?

因为这个就是标签的魅力了,你完全可以套很多层。甚至可以编写一套自己逻辑的循环体。

Integer a= 1;
label1:{
    lable2:{
        System.out.println(a++);
        if(a==2) break label1;
    }
}

“标签”的特点就是做标记,利用break和continue关键字就可以任意跳转和跳出。从而解决上面两个问题了。

合理的运用break和continue配合“标签”的使用,可以写出很好的算法,解决算法中奇葩的跳出和跳转。但是缺点也是明显的就是“思路很乱”。不会的慎用!!!

时间: 2024-07-28 13:35:32

break和continue特殊玩法“标签”的相关文章

break和continue的区别以及标签label的使用

break表示直接跳出当前循环,break只能运用于switch--case语句以及循环之中 continue则表示跳出当次循环,继续执行下一次循环 label标签则可以选择break,或者continue针对哪一个循环语句 例如:输出1到10的所有数,循环输出四行. 如果i%4==0则break: 如果i%4==0则continue: 1 class TestBreakContinue 2 { 3 public static void main(String[] args) 4 { 5 /*

Java中的break和continue关键字使用总结

一.作用和区别 break的作用是跳出当前循环块(for.while.do while)或程序块(switch).在循环块中的作用是跳出当前正在循环的循环体.在程序块中的作用是中断和下一个case条件的比较. continue用于结束循环体中其后语句的执行,并跳回循环程序块的开头执行下一次循环,而不是立刻循环体. 二.其他用途 break和continue可以配合语句标签使用.这个都很简单,下面给个综合实例,看看就明白 了: /** * Created by IntelliJ IDEA. * U

maven 高级玩法

maven 高级玩法 标签(空格分隔): maven 实用技巧 Maven 提速 多线程 # 用 4 个线程构建,以及根据 CPU 核数每个核分配 1 个线程进行构建 $ mvn -T 4 clean install $ mvn -T 1C clean install 跳过测试 -DskipTests # 不执行测试用例,但编译测试用例类生成相应的 class 文件至 target/test-classes 下 -Dmaven.test.skip=true # 不执行测试用例,也不编译测试用例类

带标签的 break 和 continue (Java)

2002年12月发于 CCW-I2006年9月搬至 CSDN,略作修改 Java 中有 goto 关键字,但这个关键字没有任何作用,换句话说,我们不能使用 goto 来进行跳转到某行.实际上,结构化程序设计完全不需要 goto 语句即可完成各种流程,而 goto 语句的使用往往会使程序的可读性降低,所以 Java 不允许 goto 跳转. Java 中同样可以定义标签,使用标识符加冒号 (:) 的形式,如"mylabel:".不过既然 Java 中的 goto 没有实质性的作用,标签的

java中break、continue及标签等跳转语句的使用[上]

java 中跳转语句使用break.continue和标签,各自或组合完成相应的功能. 今天做题时遇到关于标签命名规范,顺便将跳转语句语法都看了一遍,很有收获. 在<Java编程思想>一书中,作者详细阐述,现将案例代码写在下面: public class LabeledFor { public static void main(String[] args) { int i=0; outer: for(;true;){ inner: for(;i<10;i++){ System.out.p

break、continue关键字配合标签使用,实现跳转功能

知识点:continue和break配合标签实现跳转功能 尽管java中goto是一个保留字,但在语言中并未使用它,Java没有goto.然后java也可以完成一些类似于跳转的操作,那就是将break和continue配合标签一起使用 标签是后面跟有冒号的标识符,就像下面这样: lable1: 在java中,标签起作用的唯一地方刚好是在迭代语句之前."刚好之前"的意思表明,在标签和迭代之间置入任何语句都不好.而在迭代之前设置标签的唯一理由是:我们希望在其中嵌套另一个迭代或者一个开关.这

Java SE之break和continue标签

文是学习网络上的文章时的总结,感谢大家无私的分享. Java没有提供goto功能,可是保留了gotokeyword. 在java中能够使用break标签和continue标签功能实现简版的goto功能. 以下的小代码做抛砖引玉. package SE; /** * * <p> * Description: 使用break和continue的标签功能 * </p> * @author zhangjunshuai * @version 1.0 * Create Date: 2014-1

Java 中break和continue结合标签标示符中断循环示例详解(附源码)

臭名昭著的goto 编程语言中一开始就有goto关键词了.事实上,goto起源于汇编语言的程序控制:"若条件A成立,则跳到这里:否则跳到那里".如果阅读由编译器最终生成的汇编代码,就会发现程序控制里包含了许多跳转.(Java编译器生成它自己的"汇编代码",但是这个代码是运行在Java虚拟机上的,而不是直接运行在CPU硬件上.) goto语句是在源码级上的跳转,这使其招致了不好的声誉.若一个程序总是从一个地方跳到另一个地方,还有什么办法能识别程序的控制流程呢?自从Ed

带标签的break和continue语句 *寻找100~150之间的质数*

1 //比较break和continue语句的不同 2 public class TestBreakContinue { 3 public static void main(String[] args){ 4 int a = 0; 5 System.out.println("Begin"); 6 while(true){ 7 a++; 8 int b = (int)Math.round(100*Math.random()); 9 if(b==88)break; 10 } 11 Syst