打破嵌套for循环

可能重复:
如何从双/嵌套循环中的主/外循环中断开?

我有以下情况:

      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;
                    }
                }
            }
        }

我要

schlepper.fliege(stationen[k].x,
                 stationen[k].y,
                 stationen[k].z);

执行一次,然后跳出内部循环,并继续for(int i ... loop。因此,我在代码中使用了一个中断,但我不确定这是否正确。中断是否会导致中断对于所有的循环或只是第二个循环?


它只打破内部循环,因此做你想要的。 要打破多个级别,在Java中,可以使用如下所示的“标记中断”:

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;
        }
    }
}

但通常你不会需要这个。

无论如何,你可以考虑为内部循环制定一个单独的方法; 你可以很容易地给它命名(“find_available_station”或类似的东西),并且可能需要别的地方。

此外,请注意,您的循环现在将错过每个阵列的最后一个元素。 仔细考虑你为什么使用<而不是<=; 正是这样,你可以使用从0开始的所有值, 但不包括指定的值。


break会打破最内层的循环,在你的情况下第二循环。

为了让它打破外层循环,你可以使用标签break:

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

break只打破了最内层的循环。

链接地址: http://www.djcxy.com/p/36323.html

上一篇: Break in nested for loops

下一篇: How to break out of jQuery each Loop