연습기록/JAVA

[JAVA]if문 연습하기-학점계산문제

박박소현 2024. 10. 18. 20:19

 

 

 

문제

1. 학생의 점수를 입력받는다
2. 입력받은 점수에 따라서 학점을 부여한다
[학점]
90점 이상일 경우
1) 98점 이상이면 A+
2) 95점 이상이면 A0
3) 90점 이상 95점 미만 A-

80점 이상일 경우
1) 88점 이상이면 B+
2) 85점 이상이면 B0
3) 85점 미만이면 B-

나머지는 C학점

내가 생각한 설계

-if문을 사용하기

 

1.스캐너 클래스를 생성하여 점수를 입력받기

2.if문을 이용해 점수별로 알맞는 학점 저장

3.점수와 학점 출력

 

사용할 명령어 이론

 

1.Scanner

-입력에 관련된 기능을 가진 클래스

-Scanner 타입의 sc변수를 선언하고 Scanner클래스를 복제한 값을 저장했으므로, Sc라는 변수를 통해 Scanner가 가진 기능을 사용할 수 있다

 

##입력메서드
1.next()
-사용자가 입력한 값을 String 타입으로 가져온다
-입력한 값에 띄어쓰기가 있으면 띄어쓰기 직전까지만 가져온다
2.nextLine()
-사용자가 입력한 값을 String 타입으로 가져온다
-띄어쓰기 상관없이 엔터를 기준으로 가져온다(한 줄을 다 가져옴)

3.nextInt()
-사용자가 입력한 값을 int 타입으로 가져온다
-next()와 동일하게 값에 띄어쓰기가 이쓰면 띄어쓰기 직전까지만 가져온다

 

2.if문

-if라는 키워드를 사용한다
-조건식이 true인 경우 if문 블록 내의 코드를 실행한다

 

##if와 함께 사용할 수 있는 문
-else문
-else if문

###else
-if와 함께 사용한다
-위의 조건이 모두 거짓일 때 블록이 실행된다
-마지막에 한번만 사용 가능하다

###else if
-if와 함꼐 사용한다
-위의 조건이 거짓이고 자신의 조건이 참이면 블록이 실행된다
-여러번 사용 가능하다

 

주의할 점

-코드는 위에서부터 아래로 순차적으로 실행되기 때문에 순서 신경써서 만들기

--높은 점수부터 낮은 점수순으로 코드 짜기

 

문제 풀이

1.스캐너 클래스를 생성하여 점수를 입력받기

Scanner sc = new Scanner(System.in);
	  
	  System.out.print("점수를 입력하시오: ");
	 int score = sc.nextInt();

-입력창 바로 옆에 입력을 받기위해 출력메소드를 println()이 아닌 print()를 사용했다

-입력받은 점수는 score라는 변수를 생성해 저장해두도록 만들었다

 

2.if문을 이용해 점수별로 알맞는 학점 저장

3.점수와 학점 출력

[학점]
90점 이상일 경우
1) 98점 이상이면 A+
2) 95점 이상이면 A0
3) 90점 이상 95점 미만 A-

80점 이상일 경우
1) 88점 이상이면 B+
2) 85점 이상이면 B0
3) 85점 미만이면 B-

나머지는 C학점

if(score >= 98) {
		 System.out.println("점수:"+ score + "학점 A+");
	 }else if(score>=95) {
		 System.out.println("점수:"+ score + "학점 A0");
	 }else if(score<=95&&score>=90) {
		 System.out.println("점수:"+ score + "학점 A-");
	 }else if(score>=83) {
		 System.out.println("점수:"+ score + "학점 B+");
	 }else if(score>=85) {
		 System.out.println("점수:"+ score + "학점 B0");
	 }else if(score<85&&score>=80) {
		 System.out.println("점수:"+ score + "학점 B-");
	 }else {
		 System.out.println("점수:"+score+"학점 C");
	 }

-높은 점수부터 낮은 점수 순으로 if문을  작성해보았다

-90점 미만으로,80점 미만으로 내려가는 점수 전에는 &&(AND)를 사용하여 점수의 차이를 두었다

 

실행결과

012

-문제 없이 실행되었다

 

선생님의 풀이

   Scanner sc = new Scanner(System.in);

//      1) 점수 입력받기
      System.out.print("점수 입력 >> ");
      int score = sc.nextInt(); // 입력받은 정수 변수에 저장

//      2) 학점을 저장할 변수 초기화
      String grade = ""; // 빈 문자열 저장

//      3) 조건문사용 점수에 따라 학점 계산

      if (score >= 90) {
         grade = "A";

         if (score >= 98) {
            grade += "+"; // grade = grade("A") + "+", 문자열 연결
         } else if (score >= 95) {
            grade += "0";
         } else { // 점수가 90점 이상이고 95점 미만
            grade += "-";
         }

      } else if (score >= 80) {
         grade = "B";
         if (score >= 88) {
            grade += "+";
         } else if (score >= 85) {
            grade += "0";
         } else {
            grade += "-";
         }

      } else {
         grade = "C";

      }

//      4) 입력받은 점수와 학점 출력
      System.out.println("점수는 " + score + "점, 학점은 " + grade);

   }

}

 

-내가 풀었던 거에서 학점을 저장할 grade 변수 생성, if문 안에 if문을 추가로 사용을 하니 실행결과는 똑같으나 가독성이 더 높아진 걸 느낄 수 있었다

 

느낀점

-문제를 풀 당시에는 조건식 안에 조건식을 사용할 수 있다는 걸 몰랐어서 선생님의 풀이를 보고 조건식 안에 조건식이 가능하다는 걸 깨닫고 나니 더 다양한 조건식을 만들 수 있을 거 같았다

-나는 점수만 저장했지만 선생님은 학정 또한 저장하기 위해 변수를 만드신 것을 보고 바로 출력할 수 있어도 어떻게 될 지 모르니 필요한 값들은 변수로 저장을 해두는 버릇을 키워야겠다고 생각했다