Computer Science/컴퓨터 프로그래밍
JAVA/C++ 반복문 탈출(break, label)
Chavo Kim
2020. 9. 18. 13:36
코딩을 할 때 2중으로 for문이 있거나 while문을 돌릴 때,
전체 반복문을 탈출하고 싶을 때가 있다.
그럴 때 break를 사용하게 되면, 현재 반복문만 통과하기 때문에 상위의 반복문은 여전히 돌아간다.
만약 전체 반복문을 탈출하고 싶다면 labeling을 사용해서 통과해줄 수 있다!
아래 코드를 보자
public class Practice {
public static void main(String[] args){
char[] test = new char[]{'a', 'b', 'c'};
int[] test2 = new int[]{0, 1, 2};
int i = 0;
loof1 : while(true){
System.out.println("i : " + i);
for(int j : test2) {
if(j == 2)
break;
System.out.println("j : " + j);
}
i++;
if(i == 10)
break;
}
}
}
아래와 같이 반복문이 구성되어 있을 때, j==2에서 break를 하면 내부의 반복문만 끝나고 상위의 while 반복문은 계속 돌게 된다.
출력
i : 0
j : 0
j : 1
i : 1
j : 0
j : 1
i : 2
j : 0
j : 1
i : 3
j : 0
j : 1
i : 4
j : 0
j : 1
i : 5
j : 0
j : 1
i : 6
j : 0
j : 1
i : 7
j : 0
j : 1
i : 8
j : 0
j : 1
i : 9
j : 0
j : 1
만약 j == 2가 되는 조건에서 전체 반복문을 끝내고 싶다면?
앞서 벗어나고 싶은 반복문 앞에 "label_name :" 으로 labeling 해주고
이후에 break label;으로 해당 반복문을 벗어나주면 된다.
public class Practice {
public static void main(String[] args){
char[] test = new char[]{'a', 'b', 'c'};
int[] test2 = new int[]{0, 1, 2};
int i = 0;
loof1 : while(true){//label 선언
System.out.println("i : " + i);
for(int j : test2) {
if(j == 2)
break loof1;//최상위 반복문 탈출
System.out.println("j : " + j);
}
i++;
if(i == 10)
break;
}
}
}
출력 :
i : 0
j : 0
j : 1
p.s.
C/C++에서도 가능한가 싶어서 찾아보니,
dojang.io/mod/page/view.php?id=259
C 언어 코딩 도장: 32.2 중첩 루프 빠져 나오기
이번에는 중첩 루프와 goto에 대해서 알아보겠습니다. 다음은 변수 num1이 20이 되면 중첩 루프를 빠져나옵니다. if_multiple_loop.c #include #include int main() { int num1 = 0; bool exitOuterLoop = false; // 바깥쪽 루��
dojang.io
goto를 사용해서 바로 EXIT 부분으로 빠져나올 수 있더라...
역시 아는게 힘.