打破外循环是否允许内循环完成所有执行?
Does breaking an outer loop allow the inner loop finish all it's execution?
可能是一个简单的问题,但是,有两个嵌套循环,如果我在外部循环上执行 break
,内部循环也会立即中断吗?还是让它完成执行,然后立即破坏外部?
例如:
outer: for (int i=0; i<10; i++) {
for (int j=0; j<10; j++) {
if (j == 5) break outer;
System.out.println(j);
}
System.out.println("test");
}
这段代码会在中断外循环之前打印从 0
到 5
的数字,还是会打印从 0
到 10
的数字?
System.out.println("test");
也会执行吗?
它将打印从 0
到 4
的数字。
5 不包括在内,因为满足条件时不执行打印 (j==5)
。如果要包含它,请将条件更改为 (j>5)
。
关于你的第二个问题,不,"test"
永远不会被打印出来。带标签的 break 结束外循环(里面的每条语句,包括内循环)并结束程序的执行,只需打印:
0
1
2
3
4
编辑:经过测试和确认,以上是结果输出。
可能是一个简单的问题,但是,有两个嵌套循环,如果我在外部循环上执行 break
,内部循环也会立即中断吗?还是让它完成执行,然后立即破坏外部?
例如:
outer: for (int i=0; i<10; i++) {
for (int j=0; j<10; j++) {
if (j == 5) break outer;
System.out.println(j);
}
System.out.println("test");
}
这段代码会在中断外循环之前打印从 0
到 5
的数字,还是会打印从 0
到 10
的数字?
System.out.println("test");
也会执行吗?
它将打印从 0
到 4
的数字。
5 不包括在内,因为满足条件时不执行打印 (j==5)
。如果要包含它,请将条件更改为 (j>5)
。
关于你的第二个问题,不,"test"
永远不会被打印出来。带标签的 break 结束外循环(里面的每条语句,包括内循环)并结束程序的执行,只需打印:
0
1
2
3
4
编辑:经过测试和确认,以上是结果输出。