[Java] #7 제어문 3 (break문, continue문)

febCho·2023년 10월 5일
0

Java

목록 보기
15/53

3. 그 외

java의 제어문으로 비교문(if, switch)과 반복문(for, while, do~while) 외에
break문과 continue문이 존재한다.

제어문

3-1. break문

break문은 특정 조건일 때 switch문, 반복문 등을 빠져나가도록하는 제어문이다.
아래 예제를 보자.

package kr.s05.operation;

public class BreakMain01 {
	public static void main(String[] args) {
		int n = 1;
		while(n<=10) {
			System.out.println(n);
			n++;
			
			if(n==8) break;//수행문이 한 줄이라 중괄호 생략
		}
		
	}
}
  1. break문을 작성하기 전 출력 값은 아래와 같다.
출력)
1
2
3
4
5
6
7
8
9
10
  1. break문을 작성한 후의 출력 값은 아래와 같이 달라진다.
출력)
1
2
3
4
5
6
7

그 이유는 if(n==8) break;에 있다. 만약 n이 8이 된다면, 반복문을 빠져 나가도록 break문이 작성되어 있기 때문이다.
이렇듯 break문은 특정 조건을 필요로 하므로 대부분 비교문과 함께 한다.

package kr.s05.operation;

public class BreakMain02 {
	public static void main(String[] args) {
		//다중반복문에서 break 사용하기
		for(int i=0;i<3;i++) {
			for(int j=0;j<5;j++) {
				if(j==3) break;
				
				System.out.println("i = " + i + ", j = " + j);
			}
		}
	}
}
  1. 하지만 break문의 경우, 다중 반복문일 때 전체 반복문을 빠져나가는 것이 아니라 break가 포함되어 있는 반복문만 빠져나간다.
출력)
i = 1, j = 0
i = 1, j = 1
i = 1, j = 2
i = 2, j = 0
i = 2, j = 1
i = 2, j = 2

따라서 전체 반복문을 빠져나가기 위해서는 break label문이 필요하다.

3-1-1. break label문

package kr.s05.operation;

public class BreakMain03 {
	public static void main(String[] args) {
		//다중반복문에서 break를 이용해 모든 반복문 빠져나가기
		
		exit_for: //레이블명 지정
		for(int i=0;i<3;i++) {
			for(int j=0;j<5;j++) {
				if(j == 3)
					break exit_for;//레이블이 지정된 for문 영역을 빠져나감
				System.out.println("i = " + i + ", j = " + j);
			}
		}
	}
}
  1. exit_for:과 같이 임의의 레이블명을 지정 후, 그 안에 반복문을 놓는다.
  2. 그 후 비교문과 함께 break exit_for; break label문을 작성한다.
  3. 위와 같이 코드 작성 시 BreakMain02 예제에서의 출력 결과와 달리 아래와 같은 결과가 출력된다.
출력)
i = 0, j = 0
i = 0, j = 1
i = 0, j = 2

3-2. continue문

반면, continue문의 경우 반복문을 탈출하는 것이 아니라 continue문 이하의 수행문들을 포기하고 다음 회차의 반복을 수행한다.

ㄴ 반복문에 머물러 있으며 skip하는 효과를 줌

package kr.s05.operation;

public class ContinueMain {
	public static void main(String[] args) {
		for(int i=0;i<=10;i++) {
			//특정 조건일 때 수행문의 실행을 멈추고 다음 반복 회차로 건너뜀
			if(i%3==0) {
				continue;
			}
			System.out.println(i);//0~10 출력
		}
	}
}
  1. if(i%3==0) 조건에 따라 for문에서 i가 하나씩 증가할 때 3의 배수일 경우, 출력되지 않고 다음으로 넘어간다.
  2. 출력 결과는 다음과 같다.
출력)
1
2
4
5
7
8
10

여기서 알아두어야 할 것은 나누었을 때 나머지가 0이 되는 것으로 0도 출력되지 않는다는 점이다.

profile
Done is better than perfect.

0개의 댓글