제어문인 조건문과 반복문에 대한 사용 방법은 이전 걸음에서 배웠습니다. 그럼 반복문 같은 경우 조건에 의해서 반복을 하다가 그 안에서 뭔가 제어를 할 수 있는 명령문이 있지 않을까? 이런 생각을 한 적이 있지 않나요? 반복문을 실행하는 경우에 중간에서 원하는 결과가 나오도록 하는 명령문이 없을까 저도 생각을 많이 했습니다.
이제 제어문에 마지막 명령어 입니다. 이 명령어들은 반복문에서 주로 사용 되어서 원하는 시점에 반복문을 멈추고 나오거나 또는 원하는 시점에서 다시 반복문 처음으로 끌어 올릴 수 있게 하는 명령문 입니다. 이 명령문을 잘 사용을 하신다면 반복문을 좀 더 원하는 결과가 나오게 구현을 하실 수 있습니다.
반복문을 탈출하거나 또는 다시 반복문 처음으로 올리는 명령문은 break문과 continue문이 있습니다. 이 두 명령문을 자세히 이야기를 해보겠습니다. 그래도 결국 많이 사용하고 만들어 보셔야 적재적소에 break와 continue를 사용을 하 실 수 있습니다. 이 글을 끝까지 읽으신다면 break문과 continue문이 무엇인지 확실히 이해를 하실 수 있습니다.
break문
break문은 두 가지에서 사용이 됩니다. 우선 첫 번째로는 조건문에서 사용이 되는데 switch문에서 case조건이 맞고 명령문을 실행을 한 이후에 break; 문을 사용해서 switch문을 탈출하게 합니다. 두 번째로는 반복문에서 break 본인을 쌓고 있는 반복문만 탈출을 하게 해줍니다.
※ 여기서 중요한 것은 중첩 반복문을 사용해서 구현이 되어 있는 경우 break 쓰면 반복문 전체를 나가는 것이 아닙니다. 하나의 반복문만 나가는 걸 이해를 하셔야 합니다.
※만약 switch문과 반복문을 같이 쓰는 경우에 switch문에 사용되는 break는 switch만 탈출 할 때 사용이 됩니다. 반복문을 탈출 시켜주지 않습니다.
위의 예시처럼 반복문이 싸고 있고 인접한 반복문만 탈출을 합니다. 그리고 switch문을 사용하는 경우에는 위에 예시처럼 사용해서 탈출을 시켜줄 수 있습니다.
public static void main(String[] args) {
// TODO Auto-generated method stub
int i = 0; // 정수 변수 i를 선언후 0을 대입
while(i <10) { // i가 10보다 작으면 반복
while(true) {// 무한반복
System.out.println("내부 while문"+i); //출력
if(i > 5) { // i가 5보다 크면 실행
break; // break를 싸고 있는 반복문 하나 탈출
}
i++; //i변수 1씩증가
}
System.out.println("외부 while문"+i);//출력
i++;//i변수 1씩 증가
}
}
continue문
continue문은 반복문 동작을 하는 경우 어떤 특정 시점에 조건을 정의 하고 그 시점이 오면 continue 명령문 밑에 명령문을 실행하지 않고 다시 반복문의 조건이 있는 곳으로 올려주는 동작을 합니다.
※ 초기화 되는 것이 아닙니다. 반복문으로 끌어 올려주고 상황은 바뀌는 것이 아닙니다.
위에 예시를 보면 첫 번째 예시 같은 경우 0~9까지 반복되고 출력이 되는데 5인 시점에 continue가 있어서 5만 출력이 되지 않습니다. 두 번째 예시는 0~5까지 동작을 하는데 0~4까지는 출력이 되고 5가 되는 시점에 반복문으로 올라가서 6이 되면서 탈출을 하게 됩니다.
※ 두 번째 예시의 경우에 의해서 break라고 생각하는 경우가 있는데 continue에 의해서 올라가서 조건이 우연하게 탈출이 된 것입니다.
public static void main(String[] args) {
// TODO Auto-generated method stub
//정수 변수 i를 선언 후 0 대입 i가 6보다 작으면 반복
//한번 반복할 때마다 i는 1씩 증가
for(int i = 0;i<6;i++) {
if(i == 5) {//i가 5이면 실행
continue;//아래 명령문을 실행 X 반복문 위치로 이동
}
System.out.println(i);// 출력
}
}
break문과 continue문의 유의 사항
break문과 continue문을 반복문을 제어를 하기 위해서 사용을 하는 경우 보통 if문과 함께 쓰입니다. 그래야 그 조건일 때 동작이 되도록 하기 때문입니다.