티스토리 뷰

JAVA

[Java] 반복문(for문, while문, do-while문)

단미라이프 2022. 3. 12. 19:06
반응형

 

1. for문

  • 처음부터 반복 횟수를 알 수 있는 경우
for (초기문; 조건문; 반복 후 작업) {
    ...작업문...
}

 

초기문

 

  • 초기문은 시작할 때 한 번만 수행되며, 주로 조건문에서 사용하는 변수를 초기화 한다.
  • 콤마(,)로 분리하여 여러 문장을 나열할 수 있다.
  • 빈 상태로 두어도 되지만 끝에 세미콜론(;)이 있어야 한다.

 

조건문

 

  • 논리형 변수나 논리연산을 사용한다.
  • 조건문의 결과가 true이면 반복이 계속되고, false이면 for문을 벗어난다.
  • 조건문에 true가 있거나 비어 있으면 무한반복이 된다.

 

작업문

 

  • for문이 반복되는 동안 반복 실행된다.

 

반복 후 작업

 

  • 작업문이 실행된 후 '반복 후 작업문'이 실행된다.

 

for문 예제

 

  • 만약 for문을 사용하지 않고 구구단 2단을 출력한다면 아래와 같이 동일한 코드 블록을 반복적으로 실행해야 한다.
public class Ex01 {

	public static void main(String[] args) {
		// 구구단 2단을 출력
		
		System.out.println(2 + "*" + 1 + "=" + (2*1));
		System.out.println(2 + "*" + 2 + "=" + (2*2));
		System.out.println(2 + "*" + 3 + "=" + (2*3));
		System.out.println(2 + "*" + 4 + "=" + (2*4));
		System.out.println(2 + "*" + 5 + "=" + (2*5));
		System.out.println(2 + "*" + 6 + "=" + (2*6));
		System.out.println(2 + "*" + 7 + "=" + (2*7));
		System.out.println(2 + "*" + 8 + "=" + (2*8));
		System.out.println(2 + "*" + 9 + "=" + (2*9));
	}

}

 

 

 

 

  • 자바는 이러한 반복연산을 프로그래밍 할 수 있도록 반복문을 제공하고 있다.
  • for문을 활용하여 구구단 2단을 출력하면 다음과 같다.
public class Ex01 {

	public static void main(String[] args) {
		// for문을 이용하여
		// 구구단 2단을 출력
		
		for (int i = 1; i <=9 ; i++) {
			System.out.println(2 + "*" + i + "=" + (2*i));
		}
	}

}

 

 


 

 

2. while문

  • 반복 횟수를 알 수 없고, 반복 조건을 처음부터 따지는 경우
while (조건문) {
    <수행할 문장1>;
    ...
}
  • 조건문이 true인 동안 '수행할 문장'을 반복하고, false가 되면 while문을 벗어난다.

 

while문 예제

 

import java.util.Scanner;

public class Ex02 {

	public static void main(String[] args) {
		// while문 사용
		// 정수를 입력받아 입력받은 수가 10보다 작을때만 계속 정수를 입력받으세요
		// 10보다 큰 수를 입력하면 "종료되었습니다"를 출력
		
		Scanner scan = new Scanner(System.in);
		
		int num = 0;
		
		while(num < 10) {
			System.out.println("입력 >> ");
			num = scan.nextInt();
		}
		
	}

}

 

 

while문 무한루프
while (true) {    
    <수행할 문장1>;
    ...
}
  • while의 조건문이 항상 true이므로 while문 내의 '수행할 문장'이 무한하게 수행된다.

 

while문 빠져나가기(break)
  • while문은 조건문이 참인 동안 계속해서 while문 안의 수행할 문장을 반복하여 수행하므로 강제로 while문을 빠져나가야 하는 경우에는 break문을 통해 벗어날 수 있다.

 

 


 

 

3. do-while문

  • 반복 횟수를 알 수 없고, 반복 조건을 나중에 따지는 경우
do {
    <수행할 문장1>;
    ...
}
while (조건문);
  • '수행할 문장1'을 실행 후 조건문을 검사한다.
  • 무한 반복에 빠지지 않기 위해 반복이 진행되는 동안 조건문을 false로 만들 수 있도록 설계해야 한다.

 

do-while문 예제
public class Ex03 {

	public static void main(String[] args) {
		//do-while문을 활용하여 0~9까지 출력
        
		int num = 0;
		do {
			System.out.println(num);
			num++;
		}while(num<10);
	}

}

 

 


 

 

4. 중첩 반복문

  • 반복문 안에 다른 반목문을 만들 수 있다.
for (초기문1; 조건문1; 반복 후 작업) {

    for (초기문2; 조건문2; 반복 후 작업) {
        ...작업문2...
    }
    ...작업문1...
}

 

2중 중첩 for문 예제

 

  • 단순히 for문을 활용해 구구단을 출력해보자
public class Ex04 {
	public static void main(String[] args) {
		// for문으로 구구단출력
		System.out.println("2단");
		for (int i = 1; i <= 9 ; i++) {
			System.out.println(2 + "*" + i + "=" + (2*i));
		}
		System.out.println("3단");
		for (int i = 1; i <= 9; i++) {
			System.out.println(3 + "*" + i + "=" + (3*i));
		}
		System.out.println("4단");
		for (int i = 1; i <= 9; i++) {
			System.out.println(4 + "*" + i + "=" + (4*i));
		}
		System.out.println("5단");
		for (int i = 1; i <= 9; i++) {
			System.out.println(5 + "*" + i + "=" + (5*i));
		}
		System.out.println("6단");
		for (int i = 1; i <= 9; i++) {
			System.out.println(6 + "*" + i + "=" + (6*i));
		}
		System.out.println("7단");
		for (int i = 1; i <= 9; i++) {
			System.out.println(7 + "*" + i + "=" + (7*i));
		}
		System.out.println("8단");
		for (int i = 1; i <= 9; i++) {
			System.out.println(8 + "*" + i + "=" + (8*i));
		}
		System.out.println("9단");
		for (int i = 1; i <= 9; i++) {
			System.out.println(9 + "*" + i + "=" + (9*i));
		}
	}
	
}

 

  • 위의 for문을 활용한 구구단 출력을 살펴보면 2~9단까지 숫자가 1씩 증가하고, 2단일 때 1~9가 반복되는 것을 알 수 있다.
  • 2중 중첩 for문을 활용해서 구구단을 출력해보자
public class Ex04 {
	public static void main(String[] args) {
		// 2중 중첩 for문으로 구구단출력
		
		for (int j = 2; j <= 9 ; j++) {	//부모는 2~9단(j)까지 반복
       						 // j가 한번 돌때는 i가 1~9까지 반복
                             
			System.out.print(j +"단 : ");
			
			for (int i = 1; i <= 9; i++) {
				System.out.print(j + "*" + i + "=" + (j*i) + "\t");
			}
			System.out.println();
		}
	}
	
}

  • 위의 예를 보면 먼저 2~9까지의 숫자가 j에 대입된다.
  • j가 처음 2일 때 다시 for문을 만나 1~9까지 숫자가 i에 대입되고
    다음 문장인  System.out.println(2 + "*" + i + "=" + (2*i)); 를 수행하며 값을 출력하게 된다. 
  • 그 다음 j가 3이 되고 다시 for문을 반복하게 된다.
  • 이 과정은 j가 9가 될 때까지 계속 된다.

 

 


 

5. continue 와 break

 

continue문

 

  • 반복문을 빠져나가지 않고 즉시 다음 반복으로 넘어가고자 할 때 사용한다.
  • for문에서 continue를 만나면 '반복 후 작업'으로 분기한다.
  • while문이나 do-while문에서는 조건문을 검사하는 과정으로 분기한다.

 

continue문 예제

 

public class Ex05 {

	public static void main(String[] args) {
		
		//1부터 10까지의 수중에서 홀수만을 출력
		
		int a = 0;
		while (a < 10) {
		    a++;
		    if (a % 2 == 0) {
		        continue;  // 짝수인 경우 조건문으로 돌아간다.
		    }
		    System.out.println(a);  // 홀수만 출력된다.
		}

	}

}

 

 

 

break문

 

  • break문은 하나의 반복문즉시 벗어날때 사용한다.
  • break문은 하나의 반복문만 벗어나기 때문에, 중첩 반복의 경우 안쪽 반복문에 break문이 실행되면 안쪽 반복문만 벗어나며 바깥쪽 반복문 내에서는 실행이 유지된다.

 

break문 예제

 

import java.util.Scanner;

public class Ex05 {

	public static void main(String[] args) {
		
		//exit을 입력받으면 while문을 벗어나도록
		
		Scanner scan = new Scanner(System.in);
		
		System.out.println("exit을 입력하면 종료합니다.");
		while(true) {
			System.out.print("입력하세요 >> ");
			String text = scan.nextLine();
			
			if(text.equals("exit")) {	//"exit"이 입력되면 반복종료
				break;
			}
		}


	}

}

 

 

 

 

 

반응형

'JAVA' 카테고리의 다른 글

[Java] 리스트 (List, ArrayList)  (0) 2022.03.15
[Java] 배열  (2) 2022.03.14
[Java] 조건문(if문, if-else, switch-case)  (0) 2022.03.11
[Java] 연산자 및 연산자 우선순위  (0) 2022.03.09
[Java] Scanner를 이용한 키 입력  (0) 2022.03.08
댓글
반응형
공지사항