假设我有以下代码:
while (a) {
while (b) {
if (b == 10) {
break;
}
}
}
问题:break语句会让我跳出两个循环还是只有内部的一个循环?谢谢。
假设我有以下代码:
while (a) {
while (b) {
if (b == 10) {
break;
}
}
}
问题:break语句会让我跳出两个循环还是只有内部的一个循环?谢谢。
while(a) {
while(b) {
if(b == 10) {
break;
}
}
// break will take you here.
}
它只会跳出最内层的while循环。使用标签,您可以跳出两个循环:请看这个例子。
public class Test {
public static void main(String[] args) {
outerloop:
for (int i=0; i < 5; i++) {
for (int j=0; j < 5; j++) {
if (i * j > 6) {
System.out.println("Breaking");
break outerloop;
}
System.out.println(i + " " + j);
}
}
System.out.println("Done");
}
}
仅从内部循环中使用。如果您希望跳出到特定的循环,请使用标记的break。
label1:
for(){
label2:
for(){
if(condition1)
break label1;//break outerloop
if(condition2)
break label2;//break innerloop
}
}
另请参阅
while (a) {
while (b) {
if (b == 10) {
break;
}
}
}
break
命令中断最内层循环(即立即循环)。break
命令一次性中断两个循环。label1:
while (a) {
while (b) {
if (b == 10) {
break label1;
}
}
}
@Abhishekkumar
Break关键字的衍生根源来自于C语言和汇编语言,它的唯一目的是将控制权传递出复合语句,即循环、条件、方法或过程。
请参考以下链接...
http://tigcc.ticalc.org/doc/keywords.html#break
http://www.functionx.com/cpp/keywords/break.htm
http://en.wikipedia.org/wiki/Break_statement#Early_exit_from_loops
因此,如果您想同时退出两个循环,则必须使用两个Break,即一个在内部循环中,一个在外部循环中。
但是,如果您想同时停止两个循环,那么您必须使用exit或return。
它将跳出直接包含它的循环。
但是,您可以跳转到标签:
myLabel:
while(a) {
while(b) {
if(b == 10)
break myLabel;
}
}
我通常不喜欢使用这种模式,因为它很容易导致代码混乱。使用无标签的break或flag来终止您的循环。
$i = 0;
while (++$i) {
switch ($i) {
case 5:
echo "At 5<br />\n";
break 1; /* Exit only the switch. */
case 10:
echo "At 10; quitting<br />\n";
break 2; /* Exit the switch and the while. */
default:
break;
}
}
您可以设置一个标志来将信息传递给外部while循环。在这种情况下,信息可以存储在变量breakOuterLoopFlag
中,外部while循环根据此信息进行操作。
请参见下面的伪代码:
int breakOuterLoopFlag = 0;
while(a){
while(b){
if(b == 10) {
breakOuterLoopFlag = 1;
break;
}
}
if(breakOuterLoopFlag == 1) {
break;
}
}
break
语句将会退出包含该break
语句的最内层循环。Java中的break语句无法将您从多个嵌套循环中退出。