본문 바로가기
Java

Java 복습_7

by 지민재 2022. 6. 29.
반응형
SMALL

반복문

 

while문

while(조건식) {
	수행문1;  // 조건식이 참인 동안 반복 수행 
}
package selfstudy;

public class WhileEx1{

	public static void main(String[] args) {
		int num = 1;
		int sum = 0;
		
		while(num <= 10) { // num값이 10보다 작거나 같을 동인
			sum += num; // 합계를 뜻하는 sum에 num을 더하고 
			num++; // num에 1씩 더해 나감 
		}
		System.out.println("1부터 10까지의 합은 " + sum + "입니다.");
	}
}

while문이 무한히 반복되는 경우

while(true) {
	...
}
  • while문의 구조를 보면 조건식이 참이면 반복합니다.
  • while문을 상기 코드와 같이 사용하면 조건이 항상 이 되어 무한 반복합니다.

do-while문

  • while문은 조건을 먼저 검사하기 때문에 조건식이 맞기 않으면 반복 수행이 한 번도 일어나지 않습니다.
  • do-while문은 {}안의 문장을 무조건 한 번 수행한 후에 조건식을 검사합니다. 즉, 조건이 만족하는지 여부를 마지막에 검사하는 것입니다.
  • 중괄호 안의 문장을 반드시 한 번 이상 수행해야 할 때 while문 대신 do-while문을 사용합니다.
do {
	수행문1;
	...
} while(조건식);
package selfstudy;

public class WhileEx2{

	public static void main(String[] args) {
		int num = 1;
		int sum = 0;
		
		do {
			// 주어진 조건이 참이 아니더라도 무조건 한 번 수행함
			sum += num;
			num++;
		} while(num <= 10);
		
		System.out.println("1부터 10까지의 합은 " + sum + "입니다.");
	}
}

for문

  • 반복문 중에서 가장 많이 사용하는 반복문이 for문 입니다.
  • for문은 반복문을 구현하는데 필요한 여러 요소(변수의 초기화식, 조건식, 증감식)를 함께 작성하여야 하므로 while문이나 do-while문 보다 구조가 조금 더 복잡합니다.

for문의 기본구조

for(초기화식; 조건식; 증감식) {
	수행문;
}
  • 초기화식 : for문이 시작할 때 딱 한번만 수행하며 사용할 변수를 초기화합니다.
  • 조건식 : 언제까지 반복수행할 것인지 구현합니다.
  • 증감식 : 반복 횟수나 for문에서 사용하는 변수 값을 1만큼 늘리거나 줄입니다.

1부터 5까지 출력하는 프로그램 예시

1. 처음 for문이 시작할 때 출력할 숫자인 num을 1로 초기화합니다
2. 조건식 num <=5를 검사했을 때 num은 1이므로 참입니다.
3. 조건식이 참이기 때문에 for문의 System.out.println(num);을 수행하고 1을 출력합니다.
4. 증감식 num++를 수행하여 num값이 2가 됩니다.
2. 조건식 num<=5를 검사했을 때 num값은 2이므로 참입니다.
3. 조건식이 참이기 때문에 for문의 System.out.println(num);을 수행하고 2을 출력합니다.
4. 증감식 num++를 수행하여 num값은 3이 됩니다.


... 반복...
2. 조건식 num <=5를 검사했을 때 num 값은 6이므로 거짓입니다. for문이 끝납니다.
package selfstudy;

public class WhileEx3{

	public static void main(String[] args) {
		int i;
		int sum;
		for (i = 1, sum = 0; i <= 10; i++) {
			sum += i;
		}
		
		System.out.println("1부터 10까지의 합은 " + sum + "입니다.");
	}
}

실행결과
1부터 10까지의 합은 55입니다.

for문을 자주 사용하는 이유

  • for문을 가장 많이 사용하는 이유는 반복 횟수를 관리할 수 있기 때문입니다.

  • while문으로 작성한 코드를 살펴보면 num의 초기화와 조건 비교, 증감식을 따로 구현했습니다.
  • 하지만 for문을 사용하여 구현하면 초기화, 조건비교, 증감식을 한 줄에 쓸 수 있고 가독성도 좋아집니다.
  • for문은 배열과 함께 자주 사용합니다. 배열은 자료형이 순서대로 모여있는 구조인데, 배열 순서를 나타내느 색인은 항상 0부터 시작합니다. 따라서 배열의 전체 요소 개수가 n개일 때, 요소 위치는 n-1번째로 표현할 수 있습니다.
  • 이러한 배열의 특성과 증감에 따른 반복을 표현하는 데 적합한 for문의 특성 때문에 for문과 배열을 함께 자주 사용하는 것입니다.

for문 요소 생략하기

초기화식 생략

int = 0; 
for ( ; i < 5; i++) {
	...
}

조건식 생략

for(i = 0;  ; i++) {
	sum += i;
	if (sum > 200) break;
}

증감식 생략

for(i = 0; i < 5;  ) {
	...
	i = (++i) % 10;
}

요소 모두 생략

모든 요소를 생략하고 무한 반복하는 경우에 사용합니다. for ( ; ; ) { ... }

 

중첩된 반복문

package selfstudy;

public class WhileEx4{

	public static void main(String[] args) {
		int i;
		int j;
		
		for (i = 2; i <= 9; i++) { // 2단부터 9단까지 반복하는 외부 반복문 
			for (j = 1; j <= 9; j++) { // 각 단에서 1~9를 곱하는 내부 반복문
				System.out.println(i + "X" + j + " = " + i * j);
			}
			System.out.println();
		}
	}
}

continue문

  • continue문은 반복문과 함께 쓰입니다. 반복문 안에서 continue문을 만나면 이후의 문장은 수행하지 않고 for문의 처음으로 돌아가 증감식을 수행합니다.
  • 반복 건너뛰기
package selfstudy;

public class WhileEx5{

	public static void main(String[] args) {
		int total = 0;
		int num;
		
		for(num = 1; num <= 100; num++) {
			if (num % 2 == 0) {
				continue;
			}
			
			total += num;
		}
		
		System.out.println("1부터 100까지의 홀수의 합은: " + total + "입니다.");
	}
}

수업결과
1부터 100까지의 홀수의 합은: 2500입니다.

break문

반복문에서 break문을 사용하면 그 지점에서 더 이상 수행문을 반복하지 않고 반복문을 빠져나옵니다.

package selfstudy;

public class WhileEx6{

	public static void main(String[] args) {
		int sum = 0;
		int num = 0;
		
		for (num = 0; ; num++) {
			sum += num;
			if (sum >= 100)
				break;
		}
		
		System.out.println("num : " + num);
		System.out.println("sum : " + sum);
		
		sum = 0;
		num = 0;
		while(true) {
			sum += num;
			if (sum >= 100) {
				break;
			}
			
			num++;
		}
		
		System.out.println("num : " + num);
		System.out.println("sum : " + sum);
	}
}

실행결과
num : 14
sum : 105
num : 14
sum : 105

'Java' 카테고리의 다른 글

Java 복습_09  (0) 2022.07.06
Java 복습_08  (0) 2022.07.04
Java 복습_6  (0) 2022.06.18
Java 복습_5  (0) 2022.06.09
Java 복습_4  (0) 2022.06.01

댓글