I have a construct where I have a for loop nested inside of a while loop in Java. Is there a way to call a break statement such that it exits both the for loop and the while loop?
Asked
Active
Viewed 1.2k times
8
Darshan Rivka Whittle
- 31,378
- 7
- 87
- 105
themaestro
- 12,750
- 20
- 53
- 74
-
http://stackoverflow.com/questions/2545103/is-there-a-goto-statement-in-java/2545160#2545160 there you go :) – Lasse Espeholt Apr 14 '11 at 21:44
-
possible duplicate of [Breaking out of nested loops in Java](http://stackoverflow.com/questions/886955/breaking-out-of-nested-loops-in-java) – Neil May 18 '12 at 21:17
5 Answers
14
You can use a 'labeled' break for this.
class BreakWithLabelDemo {
public static void main(String[] args) {
int[][] arrayOfInts = { { 32, 87, 3, 589 },
{ 12, 1076, 2000, 8 },
{ 622, 127, 77, 955 }
};
int searchfor = 12;
int i;
int j = 0;
boolean foundIt = false;
search:
for (i = 0; i < arrayOfInts.length; i++) {
for (j = 0; j < arrayOfInts[i].length; j++) {
if (arrayOfInts[i][j] == searchfor) {
foundIt = true;
break search;
}
}
}
if (foundIt) {
System.out.println("Found " + searchfor +
" at " + i + ", " + j);
} else {
System.out.println(searchfor
+ " not in the array");
}
}
}
Taken from: http://download.oracle.com/javase/tutorial/java/nutsandbolts/branch.html
Guido Anselmi
- 3,802
- 8
- 34
- 58
3
You can do it in 3 ways:
- You can have while and for loops inside method, and then just call
return - You can break for-loop and set some flag which will cause exit in while-loop
- Use label (example below)
This is example for 3rd way (with label):
public void someMethod() {
// ...
search:
for (i = 0; i < arrayOfInts.length; i++) {
for (j = 0; j < arrayOfInts[i].length; j++) {
if (arrayOfInts[i][j] == searchfor) {
foundIt = true;
break search;
}
}
}
}
example from this site
In my opinion 1st and 2nd solution is elegant. Some programmers don't like labels.
lukastymo
- 25,133
- 12
- 52
- 66
2
For example:
out:
while(someCondition) {
for(int i = 0; i < someInteger; i++) {
if (someOtherCondition)
break out;
}
}
T.K.
- 2,119
- 5
- 21
- 26
1
Make the loop be inside a function call and return from the function?
Jean-Bernard Pellerin
- 12,351
- 9
- 57
- 76
1
You should able to use a label for the outer loop (while in this case)
So something like
label:
While()
{
for()
{
break label;
}
}
steffen
- 14,490
- 3
- 40
- 77
korymiller
- 347
- 3
- 9
- 21