7. continue와 break

Isaiah IM·2023년 1월 31일
0

java basic

목록 보기
8/38
post-thumbnail

1. break

break는 아래 그림과 같이 반복문을 강제로 빠져나가는 구문이다.

개발을 하다보면 종료조건이 충족되지 않았음에도 임의적으로 반복문을 종료해야 하는 경우가 생긴다. 이러한 상황에서 break 구문을 사용해 반복문 혹은 조건문을 임의로 종료할 수 있다.

보다 쉬운 이해를 위해 직접 코드를 작성해보면서 알아보자.
100보다 작은 수 중에서 5와 8의 최소공배수를 찾는다고 가정하자. 이때 break 구문이 유용하게 사용이 된다.

먼저, 1부터 100까지 반복하는 반복문을 작성하면 다음과 같다.

public class Break {
	public static void main(String[] args) {
		
		int lcm=0;
		
		for(int i=1; i<=100; i++) {
			
		}
	}
}

다음으로, 5와 8의 최소 공배수를 구하는 코드를 반복문 안에 삽입하면 다음과 같다.

5의 배수일 경우 5로 나누어 떨어지며, 8의 배수일 경우는 8로 나누어 떨어지므로, i%5==0 && i%8==0true가 되는 경우가 5와 8의 최소 공배수이다.

public class Break {
	public static void main(String[] args) {
		
		int lcm=0;
		
		for(int i=1; i<=100; i++) {
			if(i%5==0 && i%8==0) {
				lcm=i;
			}
		}
	}
}

최소공배수가 구해지면 for 반복문을 더이상 실행할 필요가 없어지므로 break구문을 사용해 강제로 for 반복문을 종료하고, 결과를 출력한다.

public class Break {
	public static void main(String[] args) {
		
		int lcm=0;
		
		for(int i=1; i<=100; i++) {
			if(i%5==0 && i%8==0) {
				lcm=i;
				break;
			}
		}
		
		System.out.println("LCM: "+ lcm);
	}
}

output

LCM: 40

이와 같이 break구문을 사용해 임의로 반복문을 종료하면서 흐름제어를 쉽게 할 수 있다.


2. continue

continue는 반복문의 남은 부분을 넘어가고 다시 반복 조건을 확인하는 구문이다.

이번에도 직접 코드를 작성하면서 이해를 해 보자.
1부터 100까지의 수 중에서 5와 7의 공배수를 제외한 수의 합을 구하는 코드를 작성해 보자.

먼저, 100까지 반복하는 반복문을 작성하면 다음과 같다.

public class Contiunue {
	public static void main(String[] args) {
		
		int sum=0;
		
		for(int i=1; i<=100; i++) {
			
		}
		
	}
}

다음으로 5와 7의 최소 공배수를 구하는 코드를 삽입하면 다음과 같다.

public class Break {
	public static void main(String[] args) {
		
		int sum=0;
		
		for(int i=1; i<=100; i++) {
			
			if(i%5==0 && i%7==0) {// 5와 7의 공배수
				
			}
		}
		
	}
}

이때, continue를 이용해 5와 7의 공배수일 경우에만 값을 더하지 않는 코드는 다음과 같이 작성할 수 있다.

public class Continue {
	public static void main(String[] args) {
		
		int sum=0;
		
		for(int i=1; i<=100; i++) {
			
			if(i%5==0 && i%7==0) {
				continue;
			}
			sum+=i;
		}
		
	}
}

물론, continue구문 없이도 코드를 작성할 수 있으나, 가독성이 떨어질 수 있으며, 나머지 구문을 실행하지 않는다는 부분에서 continue를 사용함으로서 성능향상을 이룰 수 있다.


3. 실습

  • Q1

    1부터 홀수만을 차례대로 더할때 합이 1000 이상이 되는 수를 찾고, 합을 출력하는 프로그램을 작성하시오.

  • Q2

    1부터 2000까지의 수 중에서 3과 5와 7의 공배수의 갯수와 공배수들의 합을 구하는 프로그램을 contunue 구문을 이용해 작성하시오.


  • A1

code

public class Q1 {
	public static void main(String[] args) {
		int cnt=1, sum=0;
		
		while(true) {
			sum+=cnt;
			
			if(sum>=1000) {
				break;// break를 하면 cnt+=2가 실행이 안되고 바로 반복문이 종료된다.
			}
			
			cnt+=2;// cnt+=2를 하면 다시 홀수가 된다.
		}
		
		System.out.println("num: "+ cnt);
		System.out.println("sum: "+ sum);
	}
}

output

num: 63
sum: 1024
  • A2

code

public class Q2 {
	public static void main(String[] args) {
		
		int cnt=0, sum=0;
		
		for(int i=1; i<=2000; i++) {
			if(i%3==0 && i%5==0 && i%7==0) {
				cnt++;
				sum+=i;
				continue;
			}
		}
		
		System.out.println("cnt: "+ cnt);
		System.out.println("sum: "+ sum);
	}
}

output

cnt: 19
sum: 19950

물론, Q2에서의 continue의 경우 큰 의미는 없으나, 만약 반복문에 더 많은 코드들이 있다면 유의미한 성능향상이 생길 수 있다.

위 주소에서 code를 다운로드 받아 eclipse로 직접 정답 확인이 가능하다.
https://github.com/isaiahIM/java_basic/tree/main/continue%20and%20break

profile
나는 생각한다. 고로 나는 코딩한다.

0개의 댓글