`
MoonMonster
  • 浏览: 36606 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

使用一个break跳出多重循环

    博客分类:
  • Java
阅读更多
大家都知道,java中的break是用来跳出循环的,例如
public class Test {
	public static void main(String[] args) {
		for(int i=0; i<10; i++){
			System.out.print(i + " ");
			if(i == 5){
				break;
			}
		}
	}
}

可以看到输出   0 1 2 3 4 5
很明显的这只是跳出一层循环,其实break的作用远不止于此。
例如,可以设置标签,让它在条件达到时,直接终止之后的循环,跳到标签出:
public class Test {

	public static void main(String[] args) {
		L:
		for(int i=0; i<10; i++){
			for(int j=0; j<10; j++){
				for(int k=0; k<10; k++){
					System.out.print(k + " ");
					if(k == 5){
						break L;
					}
				}
			}
		}
	}
}

会输出: 0 1 2 3 4 5
因为标签在最外层循环,所以整个三层循环都已经终止。
既然可以跳出最外层循环,那么也可以跳到任意一层循环中?试试,
为了使输出少一点,稍微改下循环次数:
public class Test {

	public static void main(String[] args) {
		for(int i=0; i<2; i++){
			L:
			for(int j=0; j<2; j++){
				for(int k=0; k<10; k++){
					System.out.print(k + " ");
					if(k == 5){
						break L;
					}
				}
			}
		}
	}
}

也可以看到预料的输出:0 1 2 3 4 5 0 1 2 3 4 5
那么不妨再多思考下,java的break能否像C语言的goto一样,跳到任意位置?同样用例子试下,第一次我们试着把标签放到整个循环之后去:
public class Test {

	public static void main(String[] args) {
		for(int i=0; i<2; i++){
			for(int j=0; j<2; j++){
				for(int k=0; k<10; k++){
					System.out.print(k + " ");
					if(k == 5){
						break L;
					}
				}
			}
		}
		
		L:
			System.out.println("跳到这儿了");
	}
}

但想法是好的,现实是残酷的,在编译时便已经报错:
The label L is missing.
好吧,既然是找不到L标签的位置,那么我把L标签放到循环上方去好了:
public class Test {

	public static void main(String[] args) {
		L:
			System.out.println("跳到这儿了");
		System.out.println("接下来开始for循环:");
		for(int i=0; i<2; i++){
			for(int j=0; j<2; j++){
				for(int k=0; k<10; k++){
					System.out.print(k + " ");
					if(k == 5){
						break L;
					}
				}
			}
		}
	}
}

然后还是报了同样的错:The label L is missing.
此段程序跟第二段程序相比,只是中间多了段代码,如果把标签L与循环之间的输出语句去掉的话,可以看到就没有错了。
既然最外层循环与标签间不能有其他语句,那我在多层循环之间可否添加呢?
public class Test {

	public static void main(String[] args) {
		
		for(int i=0; i<2; i++){
			L:
				System.out.println("跳到这儿了");
			for(int j=0; j<2; j++){
				for(int k=0; k<10; k++){
					System.out.print(k + " ");
					if(k == 5){
						break L;
					}
				}
			}
		}
	}
}

同样的错:The label L is missing.
好吧,还是不行,那我再换种思路,既然标签是在for循环中使用的,那么我标签后再加上一个for循环可否?
public class Test {

	public static void main(String[] args) {
		
		for(int i=0; i<2; i++){
			L:
				for(int m=0; m<10; m++){
					
				}
			for(int j=0; j<2; j++){
				for(int k=0; k<10; k++){
					System.out.print(k + " ");
					if(k == 5){
						break L;
					}
				}
			}
		}
	}
}

同样的错:The label L is missing.

再多发散思维思考下,既然在for循环中可以这样使用,那么while循环也一样?
public class Test {

	public static void main(String[] args) {
		
		int i = 0;
		L:
		while(true){
			while(true){
				System.out.print(i+" ");
				i ++;
				if(i == 5){
					break L;
				}
			}
			
		}
	}
}

亲测可行,看到输出 0 1 2 3 4 。

所以可以得出以下结论:
1.break可以用来跳出一层循环。
2.如果加上标签,在break后添上标签名,可以用来跳出任意层循环。
3.标签与for语句之间不能有其他任何语句,即使是另一个for循环也不行。
4.java中的break不能像C语言中的goto一样使用。
5.for循环与while循环中的标签同样使用方法。
分享到:
评论
2 楼 MoonMonster 2015-12-11  
再看,发现中间有段体现自己好无知。
1 楼 BS_YG 2015-11-29  
666,之前上网看socket的代码还奇怪loop是什么意思,这回懂了。
loop: while (true) {
switch (c = in.read()) {
case -1:
case '\n':
break loop;
case '\r':
int c2 = in.read();
if ((c2 != '\n') && (c2 != -1)) in.unread(c2);
break loop;

相关推荐

    js跳出多重循环

    ### JavaScript中的多重循环控制:`break`与`continue` 在JavaScript编程中,循环结构是非常重要的一个组成部分,它能够帮助我们高效地处理重复性任务。在实际应用中,我们经常会遇到需要控制多层嵌套循环的情况,...

    Delphi 跳出循环的几种方法

    Abort 是从 EAbort 过来的,可以激发 exception,其实质就是 Abort = RaiseException(),是一个不出现对话框的异常。所以 Abort 的行为和异常是一样的,其代码执行顺序也是follow异常的流程。 例如: try (1) //执行...

    PHP中使用break跳出多重循环代码实例

    在标题提到的"PHP中使用break跳出多重循环代码实例"中,我们将深入探讨如何使用`break`语句以及其在多重循环中的应用。 首先,我们来看一下提供的代码示例: ```php $array = array(1, 2, 3, 4, 5, 6); for ($i = ...

    javaScript如何跳出多重循环break、continue

    以上就是如何使用break和continue跳出多重循环的方法,其中关键在于标签的使用,让break和continue能够控制到正确的循环层级。虽然break和continue在某些情况下可以使代码更加简洁,但过度使用它们可能会影响代码的...

    Java跳出多重嵌套循环

     我们可以在循环体开头设置一个标志位,也是设置一个标记,然后使用带此标号的break语句跳出多重循环。 public class BreaklFor { public static void main(String args[]){ OK: //设置一个标记 使用带此标记...

    Python跳出多重循环的方法示例

    ### Python 跳出多重循环的方法 在编程中,经常需要使用到循环结构来重复执行某些操作。然而,在复杂的逻辑处理中,有时我们需要在特定条件下提前退出这些循环,尤其是在多重循环的情况下。Python 提供了多种方式来...

    第02章 Java编程基础 15 多重循环示例与小结

    此外,理解并掌握如何跳出多重循环也是至关重要的。在Java中,我们可以使用`break`语句跳出当前循环,`continue`语句则跳过当前循环的剩余部分,直接进入下一次循环。如果需要跳出所有嵌套循环,可以使用标签和`...

    Java跳出多重嵌套循环代码实例

    下面是一个使用标签的例子: ```java int i = 0; ok: // 定义标签ok while (true) { while (true) { i++; System.out.println(i); if (i &gt; 50) { break ok; // 引用标签ok,跳出外层循环 } } } ``` 在这个...

    Java跳出多重嵌套循环过程解析

    在上述代码中,当`j`等于3时,程序抛出一个异常,随后被`catch`块捕获,从而退出整个多重循环结构。 总结来说,Java提供了多种方式来跳出多重嵌套循环,包括使用标号、修改外层循环条件以及抛出异常。在实际编程中...

    PHP程序设计-3期(KC016) 2.6.2循环控制2break与continue常见问题.docx

    **问题 2:不会使用 `break` 跳出多重循环** 在处理多重循环(例如嵌套的`for`循环)时,`break`只会影响最内层的循环。如果需要跳出外层循环,需要使用标签(label)来标识目标循环,然后在`break`语句中引用这个...

    Python中断多重循环的思路总结

    然而,我们有时候会需要跳出多重循环,而break只能够跳出一层循环,比如: for i in range(10): for j in range(10): if i+j &gt; 5: print i,j break 这样的代码并非说找到一组 i+j &gt; 5就停止,而是连续找到10组...

    在Java中如何跳出当前的多重嵌套循环?

    在Java中,要想跳出多重循环,可以在外面的循环语句前定义一个标号,然后在里层循环体的代码中使用带有标号的break 语句,即可跳出外层循环。例如: ok: for(int i=0;i&lt;10;i++) { for(int j=0;j&lt;10;j++) ...

    4.多重循环+方法+递归作业1

    1. **多重循环**:多重循环是指在一个循环内部嵌套另一个或多个循环。在Java中,常见的多重循环有for循环嵌套for循环,或者for循环嵌套while循环等。多重循环用于处理复杂的数据结构,如矩阵、多维数组等。在题目中...

    break_continue_goto_return语句

    需要注意的是,Break 语句只能结束包含它的最内层循环,而不能跳出多重循环。 在使用 Break 语句时,需要与 if 语句一起使用,当条件满足(或不满足)时,负责退出循环。如果循环体中使用 switch 语句,而 Break ...

    c循环结构break与实用PPT学习教案.pptx

    在这个例子中,当输入的整数小于等于0时,`continue`语句使程序直接跳过此次循环的其余部分,不增加`num`和`sum`,然后检查下一个整数。 【goto语句的使用与避免】 `goto`语句在C语言中允许无条件地跳转到程序的...

    Python中断多重循环的几种方式详解

    #### 三、跳出多重循环 然而,当涉及到多重循环时,情况变得复杂起来。下面详细介绍几种常用的技术: ##### 1. 使用标记变量 这是一种常见的策略,适用于需要控制多重循环的情况。基本思想是在外部循环中设置一个...

    pb基本循环语句详解

    5. **跳出循环语句**:`BREAK`用于立即退出当前循环,`CONTINUE`跳过当前循环的剩余部分,继续下一轮循环。 6. **逻辑控制结构**:`GOTO`语句虽然可用,但通常不推荐使用,因为它可能导致难以理解和调试的代码。...

    编程技能训练与等级考试辅导:循环控制PPT文档.pptx

    多重循环是指在一个循环体内嵌套另一个循环体。多重循环可以使用while循环、do-while循环或for循环来实现。 循环跳转语句: 循环跳转语句是指在循环体内使用的跳转语句,例如break语句和continue语句。break语句...

Global site tag (gtag.js) - Google Analytics