본문 바로가기
JAVA

[JAVA] 자바 문장 - 반복문 (while 문, do-while 문)

by Amy IT 2022. 5. 19.

지난 글에 이어서 반복문을 알아보겠습니다. 

 

 

while 문

 

for문과 동일한 방식으로 동작합니다. for문과 달리, while문은 조건식의 위치만 정해져 있고 초기식, 증감식의 위치는 정해져 있지 않습니다. 

초기식;
while(조건식) {
      문장1;
      증감식;
}

 

for문과 마찬가지로 hello를 5번 출력해 보겠습니다.

int n = 0;//초기식		
while (n<5) {//조건검사
	System.out.println("hello "+n);
	n++;//증감식 
}

 

 

* while문을 사용하여 1부터 10까지 합계 구하기

for문에서 했던 것과 마찬가지로 while문을 사용해서도 1부터 10까지 합계를 구할 수 있습니다. 

int n=1;
int total =0;
while (n<=10) {			
	total += n;
	n++;
}
System.out.println(total);

 

 

* 이중(중첩) while문을 사용하여 구구단 출력하기

while문을 중첩하여 사용해서 구구단을 출력해 볼 수도 있습니다. 

int i=2; 
while (i<=9) {
	int j=1; 
	while (j<=9) {				
		System.out.println(i+" * "+j+" = "+(i*j));
		j++;
	}
	System.out.println("=============");
	i++;
}
System.out.println("main 종료");

 

 

* 반복횟수가 정해져 있지 않은 경우 while 사용

for문은 주로 반복횟수가 정해져 있는 경우에 사용하고, while문은 반복횟수가 정해져 있지 않은 경우에 사용합니다. 다음은 "종료"를 입력해야 while문이 끝나는 프로그램입니다. 

import java.util.Scanner;

public class WhileTest3 {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		System.out.println("끝내려면 종료 입력");
		while (true) {//강제 무한 반복
			System.out.println("입력하세요 : ");
			String data = scan.next();
			if (data.equals("종료")) break; //if조건 만족하면 반복문을 빠져나감
			System.out.println("입력한 값은 : "+data);
		}
		System.out.println("종료됨");
	}//end main 
    
}

Scanner 클래스와 break문에 대해서는 추후 자세히 알아보도록 하고, 반복문이 언제 끝날지 정해져 있지 않은 상황에서 while문이 어떻게 쓰이는지를 살펴보도록 하겠습니다. 해당 프로그램을 실행하면 다음과 같이 표시됩니다. 

 

while문의 조건식이 항상 true이기 때문에 while문이 무한하게 수행됩니다. 여기에 "종료"를 입력해야 if문의 조건을 만족하며 break문을 만나 while문을 빠져나오게 됩니다. 다음과 같이 출력됩니다.

 

이렇듯 반복횟수가 정해지지 않은 상황에서는 for문 대신 while문을 사용합니다. 

 

 

 

 

do-while 문

 

while문과 달리 do-while문은 do문 내에서 문장을 먼저 실행한 후 while문 조건식을 검사하기 때문에, 조건이 일치하지 않아도 적어도 한번은 문장을 무조건 수행하게 됩니다. 

do {
      문장1
} while(조건식);

do부터 while문 뒤의 세미콜론까지 하나의 문장으로 인식하여 실행하는 것이므로 반드시 마지막에 세미콜론을 표기해야 합니다.

 

다음의 두 가지 예시를 살펴보겠습니다. world 1부터 4까지 출력 후 조건식이 false가 되어 반복문이 끝납니다.

int n2 = 1;
do {
	System.out.println("world "+n2);
	n2++;
} while (n2<5);
System.out.println("do while문 바깥");
System.out.println(n2);

 

이번에는 초기값부터 조건이 일치하지 않는 경우입니다. 

int n2 = 10;
do {
	System.out.println("world "+n2);
	n2++;
} while (n2<5);
System.out.println("do while문 바깥");
System.out.println(n2);

조건이 일치하지 않아도 do문이 먼저 오기 때문에 do문 내의 문장이 한 번 실행된 것을 확인할 수 있습니다. 

 

 

이상으로 반복문 중 while문에 대해 정리해 보았습니다.

 

 

 

댓글