Java
[Java] Outer Loop 탈출법, break 사용범위
dearbeany
2022. 8. 19. 17:54
1. break 문의 탈출 => 가장 가까운 반복문 1단계
break문은 무조건 if 밖의 while, for, switch, do-while을 기준으로 가장 가까운 반복문 탈출을 시도한다. 즉,
탈출의 한계는 반복문 1단계 뿐이다.
for (int i = 0; i < 2; i++) {
System.out.println("<OuterLoop>: i = " + i);
for (int j = 0; j < 10; j++) {
if (j == 5) {
System.out.println("break 실행");
break;
}
System.out.println("InnerLoop: j = " + j);
}
}
=>
그렇다면, 이중반복문을 완전히 빠져나가고 싶다면? n의 반복문을 빠져나가고 싶다면?
2. 이중반복문의 탈출
- 태그 사용(바깥 반복문에 이름을 명명함)
OuterLoop: for (int i = 0; i < 2; i++) {
System.out.println("<OuterLoop>: i = " + i);
for (int j = 0; j < 10; j++) {
if (j == 5) {
System.out.println("break 실행");
break OuterLoop;
}
System.out.println("InnerLoop: j = " + j);
}
}
- 플래그 사용
for (int i = 0; i < 2; i++) {
System.out.println("<OuterLoop>: i = " + i);
if (flag) break;
for (int j = 0; j < 10; j++) {
if (j == 5) {
System.out.println("break 실행");
flag = true;
break; // break가 없을 경우 안쪽for문 모두 수행 후 바깥for문이 flag의해 종료
}
System.out.println("InnerLoop: j = " + j);
}
}
번외) 플래그 사용시 if문 내부의 break가 없는 경우의 출력?
- break가 없을 경우 안쪽for문 모두 수행 후 바깥for문이 flag의해 종료
boolean flag = false; // 이중반복문 탈출을 위한 플래그
for (int i = 0; i < 2; i++) {
System.out.println("<OuterLoop>: i = " + i);
if (flag) break;
for (int j = 0; j < 10; j++) {
if (j == 5) {
System.out.println("break 실행");
flag = true;
}
System.out.println("InnerLoop: j = " + j);
}
}