如何在双/嵌套循环中断开主/外循环?

She*_*ard 39 java syntax loops for-loop break

如果我在循环中循环并且一旦if语句满足我想要打破主循环,我该怎么做呢?

这是我的代码:

for (int d = 0; d < amountOfNeighbors; d++) {
    for (int c = 0; c < myArray.size(); c++) {
        if (graph.isEdge(listOfNeighbors.get(d), c)) {
            if (keyFromValue(c).equals(goalWord)) { // Once this is true I want to break main loop.
                System.out.println("We got to GOAL! It is "+ keyFromValue(c));
                break; // This breaks the second loop, not the main one.
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Jig*_*shi 61

使用带标签的休息:

mainloop:
for(){
 for(){
   if (some condition){
     break mainloop;
   }
  }
}
Run Code Online (Sandbox Code Playgroud)

另见


Roh*_*ain 28

您可以为循环添加标签,并使用它labelled break来打破适当的循环: -

outer: for (...) {
    inner: for(...) {
        if (someCondition) {
            break outer;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅以下链接


dan*_*dan 12

你可以return从该功能中获得控制权.或者使用丑陋的break labels方法:)

如果for语句后面还有其他代码部分,则可以在函数中重构循环.

IMO,在OOP中应该不鼓励使用中断和继续,因为它们会影响可读性和维护.当然,有些情况下它们很方便,但总的来说我认为我们应该避免使用它们,因为它们会鼓励使用goto风格的编程.

显然,这个问题的变化很多.彼得在这里使用标签提供了一些好的和奇怪的用途

  • 在这种特殊情况下,返回可能是适当的.然而,标签并不丑陋并且通常很有用. (5认同)
  • IMO,重新考虑如何再次编写代码以避免乱码循环是很好的.很多人不知道它们存在的原因是因为我们不需要它们.我不是说他们总是坏的. (3认同)
  • 来源/捍卫您声称标签难看的说法 (2认同)
  • @JanDvorak谢谢,丑陋且难以调试. (2认同)
  • (我通常会发现某些语言由于其他原因难以阅读 - 我甚至无法回想起上次我使用明确的"双循环"时需要打破具有正确HoF支持和支持集合API的语言.这将是根据"任意"功能,IMOHO更加干净利落;-) (2认同)