[Java] 제어문 - 반복문 - while문,do-while문

나영원·2020년 8월 24일
2

Java_basic

목록 보기
11/60

반복문

제어문의 한종류인 반복문은 동일한 수행문을 조건식이 맞는(ture) 동안 수행하도록 하는 기능을 합니다. 자바에서 반복문은 while문 do-while문 for문이 있습니다.

while문

while문은 조건식이 참인 수행문을 수행하고 다시 조건식을 검토해서 참이라면 수행을 반복하는 기능을 가진 반복문 입니다. 조건식 검토와 수행을 반복하다가 조건식이 거짓이라면 반복문을 빠져나오게 됩니다.

1부터 10까지 더하는 예제를 통해 자세히 알아보겠습니다.

public class WhileExample {

	public static void main(String[] args) {
         // 1~10을더한다면?
		int num = 1; 
		int sum = 0;
//	    sum += num++;
//	    sum += num++;
//	    sum += num++;
//	    sum += num++;
//	    sum += num++;
//	    sum += num++;
//	    sum += num++;
//	    sum += num++;
//	    sum += num++;
//	    sum += num++;
//	    sum += num++;
//	       이 아니라
	  
	    // while (true) - 무한루프 , 웹서버같이 멈추면 안되는 서비스에 사용.
		
	    while (num <= 10)  {
	    	sum += num;
	        num++; //11이된순간 빠져나옴
	    }
	    
	    System.out.println(sum); //55
	    System.out.println(num); //11 

반복문을 모를땐 sum += num;을 10번을 반복해서 입력해야 하지만 while문을 통해 반복적인 작업을 간단하게 줄일 수 있습니다.

첫번째 반복에서 num=1이기 때문에 (num <=10)이라는 조건식을 만족하여 중괄호 안에 수행문인 sum += num; 을 수행하게 됩니다. 그후 num은 증가연산자로 인해 1에서 2로 증가하게 되고 다시 처음 조건식으로 들어가게 됩니다. 이렇게 조건식을 검토하고 수행문을 수행하는것을 반복하다 num이 11으로 증가하고 조건식으로 들어갈 때 조건문에 부합하지 않게되어 while문을 빠져나오게 됩니다. 그래서 마지막 출력문에 sum은 1~10의 합인 55가되고 n은 11이 됩니다.

참고로 while(true)와 같이 반복문에 조건식에 true값을 주게되면 무한루프가 되어 무한대로 수행문을 수행하게 됩니다. 서비스가 멈추면 안되는 웹서버 같은데 사용 한다고 합니다.

do-while문

while문은 조건식을 검토하고 수행문을 수행하는 것과는 반대로do-while문은 수행문을 먼저 수행하고 조건식을 검토하는 반복문입니다. do-while문은 수행문이 일단 한번은 수행이 되야 되는 상황에서 사용하게 됩니다.

import java.util.Scanner;

public class DoWhileExample {

	public static void main(String[] args) {
		int num = 1; 
		int sum = 0; // int sum;은 안됨 // 0으로초기화 시켜줘야 덧샘가능

		
	    do {
	    	sum +=num;
	    	num++;
	    	
	    } while(num <= 10 );
	    
	    System.out.println(sum); // 55
	    System.out.println(num); // 11

위의 while문에 예제와 같이 1~10까지 더하는 반복문을 do-while문으로 만들면 위와 같습니다. 수행문이 먼저 입력되고 조건문이 뒤로오는 구조만 바뀌고 똑같은 기능을 하게 됩니다.

참고로 대입하는게 아닌 연산을 위한 변수는 int sum; 과 같이 선언하는게 아니라 int sum = 0; 과 같이 초기화를 시켜줘야 연산이 반복문에서의 연산이 가능합니다.

while문과 do-while문의 차이

예제를 통해 while문과 do-while문의 차이를 한번 더 알아 보겠습니다

Q 입력 받는 정수를 모두 더 해 줍니다. 입력된 정수가 1이면 반복문을 빠져 나옵니다.

①do-while문으로 작성할 경우

import java.util.Scanner;

public class DoWhileExample {

	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 !=1);
		
		System.out.println(sum); // 1, 1

②while문으로 작성할 경우

import java.util.Scanner;

public class WhileExample2 {

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int input;
		int sum = 0;
		input = scanner.nextInt();
				
				
		while (input !=1) {
			sum += input;
			input = scanner.nextInt(); 
		}
		System.out.println(sum); // 1,0

위의 예제에서 두 반복문은 똑같은 기능을 하지만 처음 입력값으로 1을 넣었을때 while문은 조건문이 fasle가 되어 수행문을 수행하지 않고 0을 출력하게 되고 do-while문에서는 수행문을 먼저 수행하기에 sum에 입력한 1을 더하게 되고 조건문이 false인 것을 확인하고 빠져나오기 때문에 1을 출력하게 되는 차이점이 있습니다.

또한 작은 차이점 이지만 do-while문이 끝날 때는 세미콜론을 붙인다는 차이점도 있습니다.

profile
배우는 개발 일기

0개의 댓글