글 작성자: 취업중인 피터팬
728x90
기본 환경
JDK : 1.8.0_261 버전
JRE : 1.8.0_261 버전
JAVA VERSION : 8 업데이트 261
Eclipse IDE VERSION : 2020-06버전

 

목표

자바에서 사용하는 do-while문을 이해한다.


 

 

코드
package ex04controlerstatement;

import java.io.IOException;
import java.util.Scanner;

public class E04DoWhile {

	/*
	 do ~ while문 
	 	: 반드시 한번은 실행해야 할 경우 사용하는 반복문.
	 	즉 조건검사 없이 무조건 한번은 실행된다.
	 	형식]
	 		반복을 위한 초기값;
	 		do{
				실행문장;
				반복문을 탈출하기 위한 증감식
	 		}while(조건식); <= 반드시 ;(세미콜론)으로 마무리한다.
	 		
	 */
	
	public static void main(String[] args) throws IOException {
		/*
		 시나리오] E03 예제의 수열문제를 do~while문으로 변경하여 구현하시오.
		 */
		int sum = 0;
		int i = 1;
		do {
			sum += i;
			i++;
		}while(i<=10);
		System.out.println("1~10까지의 누적함 :" +sum);
		
		/*
		 시나리오] 1부터 1000까지의 정수중 4의배수이거나 7의배수인
		 수의 합을 구하여 출력하는 프로그램을 작성하시오
		 단, do~while문을 사용해야 한다.
		 */
		
		int total = 0;
		int j = 1;
		do {
			if(j % 4 == 0 || j%7 ==0) {
				//System.out.println("j= " + j );
				total += j;
			}
			j++;
		}while(j <=1000);
		
		System.out.println("1~1000사이 4or7의 배수합 : " + total);
		
		/*
		 시나리오] 국어, 영어 수학 점수를 사용자로부터 입력받은 후 평균을 구해 A~F학점을
		 판단하여 출력하는 프로그램을 작성하시오.
		 단 사용자가 X,x(대소문자 구분 없)를 입력하면 프로그램이 종료되어야 하며 
		 do~while문으로 구현해야한다.
		 */
		
		Scanner scanner = new Scanner(System.in);
		int kor, eng, math, avg;
		int exitCode;
		
		do {
			System.out.println("국어 점수 : ");
			kor = scanner.nextInt();
			System.out.println("영어 점수 : ");
			eng = scanner.nextInt();
			System.out.println(" 수학 점수 : ");
			math = scanner.nextInt();
			
			/*
			 switch문은 if문과 같은 조건식을 사용할 수 없고 산술식만
			 사용할 수 있으므로 정수의 구간을 구하기 위해 총점을 30으로 나눠준다.
			 */
			avg = (kor+eng+math) / (3*10);
			switch(avg) {
			case 10: case 9:
				System.out.println("A학점"); break;
			case 8 :
				System.out.println("B학점"); break;
			case 7 :
				System.out.println("C학점"); break;
			case 6 :
				System.out.println("D학점"); break;
			default :
				System.out.println("F학점"); 
			}
			System.out.println("종료하려면 x(X)를 입력하세요 ");
			System.out.println("계속하려면 아무키나 입력하세요");
			exitCode = System.in.read();
			
		}while(!(exitCode == 'x' || exitCode == 'X'));
		
		/*
		 x를 입력한 경우
		 		: (true OR false) => ! true => false 반환.
		 		즉 do~while문을 탈출함
		 a를 입력한 경우
		 		: 위 경우와는 반대이므로 Loop를 반복함.
		 */
		
	}

}

 while문에 확장인  do-while문이라고 할 수 있습니다. whlie문과 다른점은 일단 실행하고 그다음부터 조건을 검사한다는 겁니다. 제가 처음에 학과에 입학해서 do-while문을 배웠을 때 "오 이런게 있네 개쩔잖아" 하고 거의 모든 코드에 do-while문을 썼던 기억이 납니다. 근데 do-while문이 생각보다 명시적라는 생각이 안들어서 요즘은 많이 안쓰게 되네요. 앞에 게시물의 시나리오를 잘 해보셨다면 여기에 시나리오도 do-while문에 문법만 알게 되면 쉽게 해결하실 수 있으실 겁니다.  마지막 예제가 좀 어려운데 한번 주석의 설명을 읽어보시고 다시 스스로 해보시는 걸 추천해 드립니다.

 

 

결과 값