개발/Java
[Java] break & continue
suniverse
2023. 1. 5. 22:52
반복문 내에서 반복문을 제어하는데 사용한다. 주로 조건식과 결합하여 사용한다.
1. break문
- 현재 수행중인 반복문을 종료하고 빠져나가는데 사용한다.
- break문을 만나면 반복문 내의 break문보다 아래쪽 문장 실행을 생략하고 즉시 반복문을 빠져나간다.
2. continue문
- 현재 수행중인 반복문의 특정 문장 실행을 생략하는데 사용한다.
- 현재 수행중인 반복문의 continue문보다 아래쪽 문장 실행을 생략하고 다음 반복을 진행하기 위해 위로 점프한다.
- for문에서 continue문은 증감식으로 이동하며, while문은 조건식으로 이동한다.
(주의)
while문 내에서 continue문을 사용해야 할 경우 제어변수를 제어하는 증감식이 continue문보다 윗쪽에 위치해야 한다. 아래쪽에 위치할 경우 실행되지 못 하고 무한루프에 빠질 수 있다.
✍
int i = 1;
while(true) {
System.out.println(i);
if(i == 5) {
break;
}
i++;
}
System.out.println("while문 종료 후 i: " + i);
- i가 5일 경우 break문이 실행되고 반복문을 빠져나온다.
- 그래서 while문이 종료된 후 i의 값은 5이다.
💻
✍
public static void main(String[] args) {
for(int i = 1; i <= 10; i++) {
if(i % 2 == 1) { // 홀수일 경우
continue;
}
System.out.println(i);
}
}
- i를 2로 나눈 나머지의 값이 1일때, 즉 홀수일 경우 반복문의 특정 문장을 생략하는 코드이다.
- for문의 경우 continue문을 만나면 증감식으로 이동한다.
💻
- 홀수인 경우의 문장이 continue를 만나 생략되었기 때문에 짝수만 출력되었다.
중첩 반복문 내에서 break, continue문 사용 시 break문, continue문이 소속된 반복문에 효과가 적용된다.
따라서 원하는 반복문 블럭에 break, continue문을 적용하고 싶을 경우 레이블(Label)기능을 활용하여 원하는 블럭을 지정하고 break, continue문 사용시 해당 레이블을 지정하도록 해야한다.
<기본 문법>
레이블명: // 세미콜론이 아니라 콜론이다.
원하는 블록문 {
안쪽 블록문 {
조건식() {
break 레이블명;
}
}
}
✍
OUTTER: // 레이블1
for(int dan = 2; dan <= 9; dan++) {
System.out.println("< " + dan + "단 >");
INNER: // 레이블2
for(int i = 1; i <= 9; i++) {
if(dan == 6) {
// break; // 안쪽 for문을 종료하고 System.out.println(); 문장이 실행
// continue; // 아래쪽 실행문을 생략하고 안쪽 for문의 증감식(i++)으로 이동
// break INNER; // 일반 break문과 동일함
// continue INNER; // 일반 continue문과 동일함
// break OUTTER; // 바깥쪽 for문을 종료하고 "프로그램 종료!"
continue OUTTER; // 바깥쪽 for문의 증감식(dan++) 으로 이동
// dan이 6일때 i가 1일 경우 continue문을 만나
// 안쪽 for문을 포함하여 바깥쪽 for문의 continue문 아래쪽 문장을 생략 후
// 다음 바깥 for문 반복을 위해 증감식(dan++) 으로 이동
}
System.out.println(dan + " * " + i + " = " + (dan*i));
}
System.out.println();
}
System.out.println("프로그램 종료!");
}
💻
- continue OUTTER를 만나 continue문의 아래쪽 문장을 생략한 후 바깥 쪽 for문의 증감식으로 이동했다
- 그래서 6단의 내용이 출력되지 않았다.