Skip to content

Commit 9ee237c

Browse files
johanjanssenmaibin
authored andcommitted
Breaking out of nested loops (eugenp#7196)
* Added Maven profiles example. * Added break examples.
1 parent 30cb9ad commit 9ee237c

2 files changed

Lines changed: 72 additions & 0 deletions

File tree

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package com.baeldung.breakloop;
2+
3+
public class LoopBreaking {
4+
5+
public String simpleBreak() {
6+
String result = "";
7+
for (int outerCounter = 0; outerCounter < 2; outerCounter++) {
8+
result += "outer" + outerCounter;
9+
for (int innerCounter = 0; innerCounter < 2; innerCounter++) {
10+
result += "inner" + innerCounter;
11+
if (innerCounter == 0) {
12+
break;
13+
}
14+
}
15+
}
16+
return result;
17+
}
18+
19+
public String labelBreak() {
20+
String result = "";
21+
myBreakLabel:
22+
for (int outerCounter = 0; outerCounter < 2; outerCounter++) {
23+
result += "outer" + outerCounter;
24+
for (int innerCounter = 0; innerCounter < 2; innerCounter++) {
25+
result += "inner" + innerCounter;
26+
if (innerCounter == 0) {
27+
break myBreakLabel;
28+
}
29+
}
30+
}
31+
return result;
32+
}
33+
34+
public String usingReturn() {
35+
String result = "";
36+
for (int outerCounter = 0; outerCounter < 2; outerCounter++) {
37+
result += "outer" + outerCounter;
38+
for (int innerCounter = 0; innerCounter < 2; innerCounter++) {
39+
result += "inner" + innerCounter;
40+
if (innerCounter == 0) {
41+
return result;
42+
}
43+
}
44+
}
45+
return "failed";
46+
}
47+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package com.baeldung.breakloop;
2+
3+
import org.junit.jupiter.api.Test;
4+
5+
import static org.junit.jupiter.api.Assertions.assertEquals;
6+
7+
class LoopBreakingUnitTest {
8+
9+
private LoopBreaking loopBreaking = new LoopBreaking();
10+
11+
@Test
12+
void whenUsingBreak_shouldBreakInnerLoop() {
13+
assertEquals("outer0inner0outer1inner0", loopBreaking.simpleBreak());
14+
}
15+
16+
@Test
17+
void whenUsingLabeledBreak_shouldBreakInnerLoopAndOuterLoop() {
18+
assertEquals("outer0inner0", loopBreaking.labelBreak());
19+
}
20+
21+
@Test
22+
void whenUsingReturn_shouldBreakInnerLoopAndOuterLoop() {
23+
assertEquals("outer0inner0", loopBreaking.usingReturn());
24+
}
25+
}

0 commit comments

Comments
 (0)