Java 嵌套for循环的中断

Java 嵌套for循环的中断,java,loops,for-loop,break,labelled-break,Java,Loops,For Loop,Break,Labelled Break,可能重复: 我有以下情况: for(int i = 0; i < schiffe.length-1; i++){ if(schiffe[i].schaden){ schlepper.fliege(schiffe[i].x, schiffe[i].y, schiffe[i].z);

可能重复:

我有以下情况:

      for(int i = 0; i < schiffe.length-1; i++){
            if(schiffe[i].schaden){
                schlepper.fliege(schiffe[i].x, 
                                 schiffe[i].y, 
                                 schiffe[i].z);
                schlepper.wirdAbgeschleppt = schiffe[i];
                for(int k = 0; k < stationen.length-1; k++){
                    if(stationen[k].reparatur == null){
                        schlepper.fliege(stationen[k].x,
                                         stationen[k].y,
                                         stationen[k].z);
                        break;
                    }
                }
            }
        }

执行一次,然后中断内部循环并继续执行for(int i…循环)。因此我在代码中使用了中断。但我不确定这是否正确。中断是导致所有循环中断还是仅导致第二个循环中断?

中断将仅导致最近的循环中断(第二个循环)
break
仅从最里面的循环中断开。

仅断开第二个循环。您可以使用“goto”当然。

Break语句会终止最近的封闭循环或switch语句,该语句以多种语言显示,但您可以尝试并确保100%。

将内部两个循环放在一个函数中,并使用return将其断开。

如果需要更多控制,可以使用带标签的Break。更多信息。如其他人所说,break将关闭最近的循环。

break
将中断最里面的循环,在您的情况下是第二个循环

要使其断开外部循环,可以使用标记为的断开:

OUTER:for(...) {
         for(...) {
            break OUTER;
         }
      }

它只中断内部循环,因此执行您想要的操作。要中断多个级别,在Java中,您可以使用“标记中断”,如下所示:

schiffe\u循环:
对于(int i=0;i
但通常你不需要这个

你可以考虑为内环做一个单独的方法,这是一个你可以很容易地给它命名的东西(“FiffyAufabl LayStand”或类似的东西),并且可能需要其他地方。


另外,请注意,您的循环现在将错过每个数组的最后一个元素。请仔细考虑为什么使用<而不是,我认为您可以再做一件事

对于(int k=0;k
如何使用一个称为“found”的布尔值,并像这样使用它:

while(!found) {
    for(...) {
        //todo
    }
}
schiffe_loop:
for(int i = 0; i < schiffe.length-1; i++){
    some_stuff();
    for(int k = 0; k < stationen.length-1; k++){
        if (something_really_bad_happened()) {
            break schiffe_loop;
        }
    }
}
                   k =  stationen.length + 1 ;

                }
            }
while(!found) {
    for(...) {
        //todo
    }
}