JAVA/java 문제

[자바JAVA] 조건문 - 점수입력하고 학점 출력하기 if문 switch문

자바칩 프라푸치노 2020. 10. 1. 21:03

문제 - 점수를 입력하면 학점을 출력하기

Scanner. if 문 , switch문 사용

 

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
 
 
import java.util.Scanner;
 
 
public class 문제5_1 {
 
    public static void main(String[] args) {
 
        
        Scanner scanner = new Scanner(System.in);
        System.out.print("점수를 입력하세요: " );
        int score = scanner.nextInt();
        String grade;
        
        //중첩 if문 사용 
        if (score >= 90) {
            grade = "A";
            
            if (score >= 96) {
                grade += "+"// score가 90이상인 가운데, 96이상이면 문자열 grade에 +를 덧붙이는 복합대입연산자.
            } else if (score < 93) {
                grade += "-";
            } else {
                
            }
        } else if (score >= 80 && score < 90) {
            grade = "B";
            if (score >= 86) {
                grade += "+";
            } else if (score < 83) {
                grade += "-";
            } else {
                
            }
        } else {
            grade = "C";
        }
        
 
        
        
        System.out.println("점수를 입력하세요 : " + score);
        System.out.println("당신의 학점은 : " + grade );
        
        
        //중첩 switch문 사용
        
        switch (score/10) { //switch문에는 int크기 이하의 정수타입과 String타입 올수 있음
        //switch문의 케이스를 줄이기 위해서 score나누기 10을 해야한다.
        // float형이나 double형은 올 수 없기 때문에 점수에 따라서 switch 문에서는 + - 형을 추가하지 못한다. 
        case 9:
            grade = "A+";
            break;
        case 8:
            grade = "B+";
            break;
        default:
            grade = "C+";
            break;
        }
        
        System.out.println("점수를 입력하세요 : " + score);
        System.out.println("당신의 학점은 : " + grade );
        
        
        
        scanner.close();
    }
 
}
 
cs

1) 스캐너로 점수를 입력받아주고

grade로 학점을 출력할 것이니 String타입으로 선언을 해줍니다.

 

2) 학점에는 A+도 있고 A-도 있고 A도 있으니 케이스를 나눠주기 위해

중첩 if문을 사용했습니다.

score가 90이상일때는 A인데

그 중에서도 96점 이상이면 grade에 +를 붙이고

93점 미만이면 -를 붙이고 

둘다에 해당하지 않으면 그냥 A만 출력합니다.

3) switch문을 사용해봅시다.

switch문에서 케이스를 1점부터 100점까지 나눌수는 없는 노릇이죠

그래서 10을 나눠서 10의 자리수로 case를 나누었습니다.

그런데 switch문에는 int크기 이하의 정수 타입과 , String타입이 올 수 있습니다.

그래서 위의 if문처럼 

93점 미만까지는 A- , 96점 이상은 A+이렇게 하려면

case가 9.3 이렇게 되어야하는데 double형으로는 case를 선정할 수 없기에 

if문보다 자유롭지 못한 조건이 됩니다.

 

출력결과입니다.

 

 

728x90