Java 跳出多重嵌套语句
2021/10/29 1:09:59
本文主要是介绍Java 跳出多重嵌套语句,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Java 跳出多重嵌套语句
尽管 Java 的设计者将 goto 作为保留字,但实际上并没有打算在语言中使用它。
——Java核心技术 卷1(原书第11版)
Java提供了一种带标签的 break 语句,使用它可以跳出多重嵌套循环,就像下面这样:
public static void main(String[] args) { int x = 1; start: while(x < 100) { int y = 1; while(y < 100) { for(int z = 1; z < 100; ++z) { if(x == 11) break start; if(x == y && y ==z) { System.out.println("x=y=z=" + x); } } ++y; } ++x; } }
输出结果如下:
x=y=z=1
x=y=z=2
x=y=z=3
x=y=z=4
x=y=z=5
x=y=z=6
x=y=z=7
x=y=z=8
x=y=z=9
x=y=z=10Process finished with exit code 0
还有一种带标签的continue语句,它将跳转到与标签匹配的循环的首部,写一个测试用例看看效果:
public static void main(String[] args) { start: for(int i = 0; i< 18; ++i) { for(int j = 0; j < 18; ++j) { for(int k = 0; k < 18; ++k) { if(i == 11) continue start; if(i == j && j == k) System.out.println("i=j=k=" + i); } } } }
输出结果如下:
i=j=k=0
i=j=k=1
i=j=k=2
i=j=k=3
i=j=k=4
i=j=k=5
i=j=k=6
i=j=k=7
i=j=k=8
i=j=k=9
i=j=k=10
i=j=k=12
i=j=k=13
i=j=k=14
i=j=k=15
i=j=k=16
i=j=k=17Process finished with exit code 0
可以看到输出跳过了i=j=k=11
。
Curiously, you can apply a label to any statement, even an if statement or a block statement.
——Java核心技术 卷1:基础知识. 上(第11版·英文版)
尝试将标签应用到 if 语句,看看有什么效果:
public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int x = scanner.nextInt(); start: if(x > 0) { System.out.println("x > 0, block executed start..."); int y = scanner.nextInt(); if(y > 0) { System.out.println("y > 0, block executed start..."); int z = scanner.nextInt(); if(z > 0) { System.out.println("z > 0, block executed start..."); System.out.println("z > 0, block executed end"); }else { break start; } System.out.println("y > 0, block executed end"); } System.out.println("x > 0, block executed end"); } }
下面是两种不同的输入得到的不同的结果:
-
第一种
1
x > 0, block executed start...
1
y > 0, block executed start...
1
z > 0, block executed start...
z > 0, block executed end
y > 0, block executed end
x > 0, block executed endProcess finished with exit code 0
-
第二种
1
x > 0, block executed start...
1
y > 0, block executed start...
-1Process finished with exit code 0
带标签的 continue 语句只能应用在循环语句中,而带标签的 break 语句则可以应用在各种复合语句中。
有一点非常明显,无论是带标签的continue语句,还是带标签的break语句,都只适合在多层嵌套语句的内层使用。对于单层循环来说,使用带标签的continue或者break是不必要的,它们和纯粹的continue语句或break语句效果一样。
参考资料:
[1] Cay S.Horstmann 著,林琪 苏钰涵等译.Java核心技术 卷1(原书第11版).北京:机械工业出版社,2020:74-76.
[2] Cay S.Horstmann.Java核心技术 卷1:基础知识 上(第11版·英文版).北京:人民邮电出版社,2019:103.
这篇关于Java 跳出多重嵌套语句的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南