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