[Java] tip: 성적 프로그램 만들기 (Scanner, do~while문, switch문)

febCho·2023년 10월 4일
0

Java

목록 보기
14/53
package kr.s05.operation;

public class DoWhileMain02 {
	public static void main(String[] args) {
		java.util.Scanner input = new java.util.Scanner(System.in);
		
		int korean, english, math, sum;
		char grade;
		float avg;
		
		do {
			System.out.print("국어=");
			korean = input.nextInt();
		}while(korean < 0 || korean > 100);
		
		do {
			System.out.print("영어=");
			english = input.nextInt();
		}while(english < 0 || english > 100);
		
		do {
			System.out.print("수학=");
			math = input.nextInt();
		}while(math < 0 || math > 100);
		
		//총점 구하기
		sum = korean + english + math;
		//평균 구하기
		avg = sum / 3.0f;
		
		//등급 구하기
		switch((int)(avg/10)) {
		case 10:
		case 9: grade= 'A'; break;
		case 8: grade = 'B'; break;
		case 7: grade = 'C'; break;
		case 6 : grade= 'D'; break;
		default: grade = 'F';	
		}
		
		System.out.println();//단순 줄바꿈
		//System.out.print("\n")으로 해도 단순 줄바꿈 가능
		System.out.printf("총점 = %d%n", sum);
		System.out.printf("평균 = %.2f%n", avg);
		System.out.printf("등급 = %c", grade);
		
		input.close();
	}
}

if문의 경우, 조건 체크는 가능하나 반복이 불가하다. 반면 while문의 경우, 반복은 가능하나 조건 체크를 위해 if문의 도움을 받아야 한다.
반면 do~while문의 경우, 입력한 값이 false이면 반복문을 빠져나가고 true이면 반복문을 돌게끔 일종의 조건 체크를 할 수가 있다.

  1. korean = input.nextInt(); 이렇게 do블럭에서 입력한 값이 0부터 100사이면 조건이 false가 되어 do~while 블럭을 빠져나감 (목표하는 값이 아닌, 목표하지 않는 값을 true 조건으로 넣어 반복문을 돌게 함)

  2. 그렇게 입력 받은 과목 점수를 sum에 모두 더하여 저장, 평균은 avg 변수에 저장한다.

  3. 등급을 구하는 방법은 switch문을 공부할 때 진행한 예제와 동일하나, avg가 실수형 변수이기 때문에 10으로 경우의 수를 줄여준 뒤 switch((int)(avg/10)) int로 강제 형변환이 필요하다.
    참고) switch문 공부하기

profile
Done is better than perfect.

0개의 댓글