Don't Panic
in Java ☕ 2분 읽기

[Java] java 반복문

목차

1. 반복문 - while문

조건이 참(true)인 동안 반복 수행하기

  • 주어진 조건이 참(true)인 동안 지정된 수행문을 반복적으로 수행하는 제어문이다.
  • 조건이 맞지 않으면 반복하던 수행을 멈춘다.
  • 조건은 주로 반복 횟수나 값의 비교 결과에 따라 true/false로 판단된다.
  • 예) 달리는 자동차, 일정 횟수만큼 돌아가는 나사못, 특정 온도까지 가동되는 에어컨 등

while문의 동작

수행문을 수행하기 전에 조건을 먼저 체크하고, 그 결과가 true인 동안 반복 수행한다.

while문 동작 흐름

while문 예제

1부터 10까지 더하여 그 결과를 출력해 봅시다.

package ch17;

public class WhileTest {

	public static void main(String[] args) {

		int num = 1;
		int sum  = 0;

		while( num <= 10) {

			sum += num;
			num++;
		}

		System.out.println(sum);
		System.out.println(num);
	}

}

무한 반복할 때

   while(true){

       .......
   }

2. 반복문 - do-while문

조건과 상관없이 한 번은 수행문을 수행

  • while문이 조건을 먼저 체크하고 반복한다면, do-while문은 조건과 상관없이 수행을 한 번 하고 나서 조건을 체크한다.
  • 조건이 맞지 않으면(true가 아니면) 더 이상 수행하지 않는다.

do-while문 동작 흐름

do-while문 예제

입력받는 모든 숫자의 합을 구하는 예제입니다. 단, 입력이 0이 되면 반복을 그만하고 합을 출력합니다.


package ch18;

import java.util.Scanner;

public class DowhileTest {

	public static void main(String[] args) {

		Scanner scanner = new Scanner(System.in);
		int input;
		int sum = 0;

		do {
			input = scanner.nextInt();
			sum += input;

		}while(input != 0);


		System.out.println(sum);
	}

}

3. 반복문 - for문

for문의 수행 순서

for문 수행 순서

for문 예제 (while과 비교)

1부터 10까지 더한 결과를 출력하세요.

package ch19;

public class ForTest {

	public static void main(String[] args) {

		int count =1;
		int sum = 0;

		for( int i = 0 ; i<10; i++, count++) {  //10번
			sum += count;
			//count++;
		}
		System.out.println(sum);


		int num = 1;
		int total = 0;

		while( num <= 10) {
			total += num;
			num++;
		}
		System.out.println(total);
	}
}

각 반복문은 주로 언제 사용하나요?

반복문 종류별 사용 시점

for문의 문장들은 생략 가능합니다

생략 항목사용 상황
초기화식 생략이미 이전에 값이 초기화되어 for 내부에서 값을 지정할 필요가 없는 경우
조건식 생략반복 수행에 대한 조건이 수행문 내부에 있는 경우
증감식 생략증감식 연산이 복잡하거나 다른 변수의 연산 결과값에 따라 결정되는 경우
무한 반복세 항목을 모두 생략하는 경우
  • 초기화식 생략

    초기화식 생략 예시

  • 조건식 생략

    조건식 생략 예시

  • 증감식 생략

    증감식 생략 예시

  • 무한 반복

    무한 반복 예시

참고: i+1i++의 차이

i+1 과 i++은 다릅니다.
i+1 자체는 i 값이 증가되지 않습니다. 증가하기 위해서는 대입연산자를 써야합니다.
하지만 i++은 i = i+1, i+=1 과 동일한 의미입니다.
따라서 값을 1씩 증가하려고 한다면 i++을 사용하세요

4. 반복문이 여러 번 포개진 중첩 반복문

중첩 반복문이란?

  • 반복문 내부에 또 다른 반복문이 있는 구조이다.
  • 여러 겹으로 반복문을 겹쳐서 구현할 수 있다. (단, 수행 시간에 문제가 발생할 수 있다.)
  • 외부 반복문과 내부 반복문 간의 변수 값 변화에 유의하며 구현해야 한다.

구구단을 for와 while로 구현해 보자

package ch20;

public class NestedLoopTest {

	public static void main(String[] args) {
		int dan = 2;
		int count = 1;

		for( dan = 2; dan <= 9; dan++) {

			for(count = 1; count <=9; count++) {

				System.out.println( dan + "X" + count + "=" + dan * count);
			}
			System.out.println();
		}

		dan = 2;
		while( dan <= 9 ) {
			count = 1;
			while (count <= 9) {

				System.out.println( dan + "X" + count + "=" + dan * count);
				count++;

			}
			dan++;
			System.out.println();
		}
	}
}

5. 중간에 멈추는 break문, 무시하고 계속 진행하는 continue문

break문 사용하기

  • 감싸고 있는 제어문의 블록을 빠져나오는 기능. (switch문에서도 사용)
  • 반복문에서는 주로 조건문(if)과 같이 사용하여, 조건에 해당하는 경우 반복 수행을 멈추고 반복문 외부로 수행이 이동한다.
  • 여러 반복문이 중첩되어 있는 경우엔 break문이 포함된 반복문만 빠져나온다.

break문 예제

1부터 숫자를 더하여 100이 넘는 순간의 그 숫자와 합을 출력하세요.

package ch21;

public class BreakTest {

	public static void main(String[] args) {

		int sum = 0;
		int num;
		for( num = 1; ; num++) {

			sum += num;
			if( sum >= 100)	break;
		}

		System.out.println(sum);
		System.out.println(num);
	}
}

continue문 사용하기

반복문 내부에서 조건문(if)과 같이 사용하며, 조건이 맞는 경우(true이면) 이후 반복문 블록 내부의 다른 수행문들을 수행하지 않는다.

continue문 예제

1부터 100까지 숫자 중 3의 배수를 출력하세요.

package ch21;

public class ContinueTest {

	public static void main(String[] args) {
		int num;
		for( num = 1; num <= 100; num++) {

			if( (num % 3) != 0) continue;

			System.out.println(num);

		}
	}
}