개발/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단의 내용이 출력되지 않았다.