1. 이름 붙은 반복문
반복문에서 break문은 근접해있는 단 하나의 반복문만 벗어나고 있고, 여러 개의 반복문이 중첩되어 있는 경우에는 온전히 반복문을 벗어날 수 없다. continue문도 마찬가지이다.
이럴 경우 반복문에 이름을 지정해 주고 break문과 continue문 뒤에 반복문 이름을 지정해 줌으로써 하나 이상의 반복문을 벗어나거나 반복을 건너뛸 수 있다.
2. 예제코드
loop : for(int i=1; i<10; i++){
for(int j=1; j<10;j++){
if(j==5){
//break;
break loop;
//continue;
//continue loop;
}
System.out.printf("%d*%d = %d\n", i, j, i*j);
}
}
위의 코드를 보면 반복문 앞에 loop라는 이름을 지정해 주었고, 활용시 각 break문과 continue문 뒤에 loop라는 이름을 붙혀주었다. 따라서 중첩되어 있는 반복문의 경우에도 해당 반복문을 완전히 벗어나거나 계속할 수 있다.
출력결과와 실행 흐름은 아래 표의 각 상황에 따른 결과를 살펴보면 이해가 빠를 것이다.
break |
1*1 = 1 1*2 = 2 1*3 = 3 1*4 = 4 2*1 = 2 2*2 = 4 2*3 = 6 2*4 = 8 3*1 = 3 3*2 = 6 3*3 = 9 3*4 = 12 4*1 = 4 4*2 = 8 4*3 = 12 4*4 = 16
|
break loop |
1*1 = 1 1*2 = 2 1*3 = 3 1*4 = 4 |
continue |
1*1 = 1 1*2 = 2 1*3 = 3 1*4 = 4 1*6 = 6 1*7 = 7 1*8 = 8 1*9 = 9 2*1 = 2 2*2 = 4 2*3 = 6 2*4 = 8 2*6 = 12 2*7 = 14 2*8 = 16 2*9 = 18 3*1 = 3 3*2 = 6 3*3 = 9 3*4 = 12 3*6 = 18 3*7 = 21 3*8 = 24 3*9 = 27 4*1 = 4 4*2 = 8 4*3 = 12 4*4 = 16 4*6 = 24 4*7 = 28 4*8 = 32 4*9 = 36 |
continue loop |
1*1 = 1 1*2 = 2 1*3 = 3 1*4 = 4 2*1 = 2 2*2 = 4 2*3 = 6 2*4 = 8 3*1 = 3 3*2 = 6 3*3 = 9 3*4 = 12 4*1 = 4 4*2 = 8 4*3 = 12 4*4 = 16 |