假设我有这个:
while (a) {
while (b) {
if (b == 10) {
break;
}
}
}
问题: break 语句会将我带出两个循环还是仅从内部循环?谢谢你。
假设我有这个:
while (a) {
while (b) {
if (b == 10) {
break;
}
}
}
问题: break 语句会将我带出两个循环还是仅从内部循环?谢谢你。
在您的示例中,break 语句将带您退出 while(b) 循环
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");
}
}
只从内心。如果您希望中断到特定循环,请使用标记中断
label1:
for(){
label2:
for(){
if(condition1)
break label1;//break outerloop
if(condition2)
break label2;//break innerloop
}
}
另见
while (a) {
while (b) {
if (b == 10) {
break;
}
}
}
在上面的代码中,您将打破使用where (ie. ) where的最内层循环。immediate loop
break
您可以使用with一次中断两个循环break
label
label1:
while (a) {
while (b) {
if (b == 10) {
break label1;
}
}
}
@Abhishekkumar
Break 关键字源自C 和Assembly,Break 的唯一目的是将控制权从复合语句(即循环、条件、方法或过程)中传递出去。
请参考这些...
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
因此,如果您想同时退出两个循环,那么您必须使用两个中断,即一个在内部循环中,一个在外部循环中。
但是你想同时停止两个循环,那么你必须使用退出或返回。
它将跳出立即包围它的循环。
但是,您可以打破标签:
myLabel:
while(a) {
while(b) {
if(b == 10)
break myLabel;
}
}
我一般不喜欢使用这种模式,因为它很容易导致意大利面条式代码。使用未标记的中断或标志来终止循环。
奇怪的是,在 PHP 中,break 语句接受一个数字参数,该参数告诉您要中断多少个外部循环,如下所示:
$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
语句的最内层循环。
在示例中,内部 while 循环。
java break 语句不会让你脱离多个嵌套循环。
当然只有内循环。