在此示例中break子句如何响应?

问题描述 投票:3回答:4

break子句如何工作?

我知道如果我在循环中有一个break,则该循环将终止其执行。例如:

for (int i=0; i<10; i++) {
    break;
}

但是如果break子句既在循环内,又在ifelse内,它会起作用吗?例如:

for (int i=0; i<10; i++) {
    if (i==7) {   
       //code
       break;
       //code
    }
}

break子句会使for循环结束,还是只是跳过if子句旁边的代码并继续迭代?

如果break子句在循环内的循环内怎么办?它会结束两个循环的执行还是结束最近的循环?

提前感谢。

java loops break
4个回答
1
投票

break语句将始终仅退出内部循环。如果语句不算作那些。如果您需要一次中断多个循环,可以使用标签:

A: while (true) {
    B: while (true) {
         break A;
    }
}

1
投票

'break'语句始终会中断循环。如果您想跳过特定索引处的迭代,可以使用'continue'关键字:

for (int i=0; i<10; i++) {
if (i==7) {   
   //code
   continue;
   //second part of code
}

}

该代码将执行的操作是,如果i == 7,它将运行//代码部分,并且在到达continue语句时,它将立即跳过//第二部分代码,并移至下一个迭代i = 8.如果有多个嵌套循环,则break语句将仅中断应用该循环的循环。但是,如果父循环中断,子(嵌套)循环也会自动中断。

    for (int i=0; i<10; i++) {
     for(int j = 0; j<10; j++){
      if(j==3){
       break;
    }
  }
}

此代码仅在j等于3时才会中断内部循环。请记住,由于第二个循环是嵌套的,即使它中断了,当父循环转到下一个索引时,它将再次运行。


1
投票

break导致跳转到循环的结尾,请参见下文:

for (int i=0; i<10; i++) {
    if (i==7) {   
       // code here will be executed
       break;
       // code here will not be executed
    }
} // break statement is like a goto to this line

break将始终只影响一个循环,它是内部的最内部循环


1
投票
for (int i=0; i<10; i++) {
    if (i==7) {   
       //code A
       break;
       //code B
    }
}

这将运行8次循环,并会破坏i=7上的整个循环。另外,code B语句之后的break将不可访问,因此在这种情况下将其写入是没有意义的。

© www.soinside.com 2019 - 2024. All rights reserved.