Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Archives
Today
Total
관리 메뉴

Everything has an expiration date

031 - Java 실행의 컨트롤(제어문) - if문을 사용하여 성적 등급 출력하기 본문

[Java]/Program source (java)

031 - Java 실행의 컨트롤(제어문) - if문을 사용하여 성적 등급 출력하기

Jelly-fish 2023. 8. 29. 15:21
/*=========================================
	■■■ 실행 흐름의 컨트롤(제어문) ■■■
	- if 문
	- if ~ else 문 실습
===========================================*/

// 1. 프로그램을 작성할 때 주어진 조건에 따라
//    분기 방향을 정하기 위해 사용하는 제어문에는
//	  if문, if~else문, 조건연산자, 복합 if문(if문 중첩), switch문이 있다.


// 2. if문은 if 다음의 조건이 참(true)일 경우
//    특정 문장을 수행하고자 할 때 사용되는 구문이다.

// 사용자로부터 이름, 국어점수, 영어점수, 수학점수를 입력받아
// 다음과 같은 형태로 출력하는 프로그램을 작성한다.
// 등급은 평균 점수를 기준으로 처리한다.

// 90점 이상           : A
// 80점 이상 90점 미만 : B
// 70점 이상 80점 미만 : C
// 60점 이상 70점 미만 : D
// 60점 미만		   : F

// 단, BufferedReader 를 활용해 데이터를 입력받을 수 있도록 하며,
// printf() 메소드를 통해 출력할 수 있도록 한다.


// 실행 예)
// 이름 입력 : 김경태
// 국어 점수 : 90
// 영어 점수 : 80
// 수학 점수 : 70
//
// >> 당신의 이름은 김경태입니다.
// >> 국어 점수는 90,
// >> 영어 점수는 80,
// >> 수학 점수는 70,
// >> 총점은 240이고, 평균은 80.00 입니다.
// >> 등급은 B 입니다.
// 계속하려면 아무 키나 누르세요...

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;


public class Test031
{
	public static void main(String[] args) throws IOException
	{

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		// 1. 사용자로부터 이름을 입력받는다.
		System.out.print("이름 입력 : ");
		String strName = br.readLine();

		// 2. 사용자로부터 국어, 영어, 수학 점수를 입력받는다.
		System.out.print("국어 점수 : ");
		String strKor = br.readLine();
		System.out.print("영어 점수 : ");
		String strEng = br.readLine();
		System.out.print("수학 점수 : ");
		String strMat = br.readLine();

		// 3. 문자열 형태로 입력받은 과목 점수를 정수 형태로 변환한다.
		int nKor = Integer.parseInt(strKor);
		int nEng = Integer.parseInt(strEng);
		int nMat = Integer.parseInt(strMat);


		// 4. 산술 연산을 통해 총점과 평균을 산출한다.
		int nTot = nKor + nEng + nMat;					//-- 총점
		double fAvg = nTot / 3.0;						//-- 평균 check~!!!

		
		// 5. 등급에 대한 조건 검사를 수행한다.
		char grade;										//-- 등급
		
		// else 를 쓰지 않고 else if만 사용하게 되면
		// java에서 오류가 발생한다. ===> if와 else if 조건문에 맞지 않는 입력이 들어왔을 때
		//								  grade를 어떤 값으로 채워야 하는지 알 수 없기 때문에...
		
		// 방법 ① : else if (fAvg < 60) 을 else 문으로 바꾼다.
		// 방법 ② : char grade 변수를 grade = 'F';로 미리 초기화 시켜둔다.

		// 위와 같은 방법을 사용하면, 잘못된 입력이 들어왔을 때에도
		// grade에 미리 값이 들어 있기 때문에 변수가 초기화 되지 않았을 때의 오류가 발생하지 않는다.



		if (fAvg >= 90)
		{
			grade = 'A';
		}
		//else if (fAvg >= 80 && fAvg < 90)
		else if (fAvg >= 80)							//-- 평균이 90점 미만 조건 포함
		{
			grade = 'B';
		}
		else if (fAvg >= 70)							//-- 평균이 80점 미만 조건 포함
		{
			grade = 'C';
		}
		else if (fAvg >= 60)							//-- 평균이 70점 미만 조건 포함
		{
			grade = 'D';
		}
		else
		{
			grade = 'F';
		}

		// 6. 최종 결과 출력
		System.out.printf("\n>> 당신의 이름은 %s 입니다.\n", strName);
		System.out.printf(">> 국어 점수는 %s,\n", strKor);
		System.out.printf(">> 영어 점수는 %s,\n", strEng);
		System.out.printf(">> 수학 점수는 %s,\n", strMat);
		System.out.printf(">> 총점은 %d이고, 평균은 %.2f입니다.\n", nTot, fAvg);
		System.out.printf(">> 등급은 %c 입니다.\n", grade);

		

	}
}

// 실행 결과

/*
이름 입력 : 김경태
국어 점수 : 90
영어 점수 : 81
수학 점수 : 73

>> 당신의 이름은 김경태 입니다.
>> 국어 점수는 90,
>> 영어 점수는 81,
>> 수학 점수는 73,
>> 총점은 244이고, 평균은 81.33입니다.
>> 등급은 B 입니다.
계속하려면 아무 키나 누르십시오 . . .
*/



/* ======================[내 풀이]=====================

public class Test031
{
	public static void main(String[] args) throws IOException
	{
		// 1. 변수 선언==============
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int kor, eng, mat, tot;
		double average;
		char degree;
		String name;

		// 2. 입력 받기==============

		System.out.print("이름 입력 : ");
		name = br.readLine();

		System.out.print("국어 점수 : ");
		kor = Integer.parseInt(br.readLine());

		System.out.print("영어 점수 : ");
		eng = Integer.parseInt(br.readLine());

		System.out.print("수학 점수 : ");
		mat = Integer.parseInt(br.readLine());

		// 3. 연산 처리=============
		
		// 총점 구하기
		tot = kor + eng + mat;

		// 평균 구하기
		average = tot / 3.0;

		// 등급 구하기
		// 90점 이상           : A
		// 80점 이상 90점 미만 : B
		// 70점 이상 80점 미만 : C
		// 60점 이상 70점 미만 : D
		// 60점 미만		   : F

		if (90 <= average)
		{
			degree = 'A';
		}
		else if (80 <= average)
		{
			degree = 'B';
		}
		else if (70 <= average)
		{
			degree = 'C';
		}
		else if (60 <= average) 
		{
			degree = 'D';
		}
		else
		{
			degree = 'F';
		}

		// 4. 출력 =====================

		// >> 당신의 이름은 김경태입니다.
		// >> 국어 점수는 90,
		// >> 영어 점수는 80,
		// >> 수학 점수는 70,
		// >> 총점은 240이고, 평균은 80.00 입니다.
		// >> 등급은 B 입니다.
		// 계속하려면 아무 키나 누르세요...

		System.out.printf(">> 당신의 이름은 %s입니다.\n", name);
		System.out.printf(">> 국어 점수는 %d\n", kor);
		System.out.printf(">> 영어 점수는 %d\n", eng);
		System.out.printf(">> 수학 점수는 %d\n", mat);
		System.out.printf(">> 총점은 %d이고, 평균은 %4.2f입니다.\n", tot, average);
		System.out.printf(">> 등급은 %c 입니다.\n", degree);

		



	}
}

*/

// 실행 결과
/*
이름 입력 : 김지민
국어 점수 : 90
영어 점수 : 80
수학 점수 : 70
>> 당신의 이름은 김지민입니다.
>> 국어 점수는 90
>> 영어 점수는 80
>> 수학 점수는 70
>> 총점은 240이고, 평균은 80.00입니다.
>> 등급은 B 입니다.
계속하려면 아무 키나 누르십시오 . . .
*/