This question already has an answer here:
- How do I break out of nested loops in Java? 31 answers
If I have loop in a loop and once an if
statement is satisfied I want to break main loop, how am I supposed to do that?
This is my code:
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.
}
}
}
}
Just for fun:
Comment on
break label
: it's a forward goto. It can break any statement and jump to the next:It looks like for Java a labeled break appears to be the way to go (based on the consensus of the other answers).
But for many (most?) other languages, or if you want to avoid any
goto
like control flow, you need to set a flag:You can just
return
the control from that function. Or use the uglybreak labels
approach :)If there is another code parts after your
for
statement, you can refactor the loops in a function.IMO, the use of breaks and continue should be discouraged in OOP, since they affect the readability and the maintenance. Sure, there are cases where they are handy, but in general I think that we should avoid them, since they will encourage the use of goto style programing.
Apparently variations to this questions are posted a lot. Here Peter provided some good and odd uses using labels.
You can add labels to your loop, and use that
labelled break
to break out of the appropriate loop: -See these links for more information:
The best and easy methods for beginners even:
Using a labeled break:
Also See