Java를 이용한 Array(배열)만으로 만든 성적 관리 프로그램

2021. 7. 15. 11:38
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
package tester;
 
import java.util.Scanner;
 
public class ScoreBoard {
 
    public static void main(String[] args) {
        // Array를 이용하여 다음과 같은 프로그램 만들기.
        // 성적입력받기, 총합구하기, 평균구하기, 최고점수와 최저점수, 중간값 구하기.
        // Array >> ArrayList를 사용하면 더 편하게 만들 수 있을듯.
        
        Scanner scan = new Scanner(System.in);
        
        int sum = 0;
        double average = 0;
        int max = 0;
        int min = 0;
        int students = 0;
 
        System.out.println("반의 학생수를 입력하세요.");
        
        while(students <= 0) {
            students = scan.nextInt();
            if(0 >= students) {
                System.out.println("최소 학생수는 1명입니다. 다시 입력하세요.");
            }
        }
        
        int[] scores = new int[students];
        
        for(int i = 0; i < scores.length; i++) {
            System.out.println("학생" + (i+1+ "의 점수를 입력하세요.");
            scores[i] = scan.nextInt();
            
            if(0 > scores[i] || 100 < scores[i] ) {
                System.out.println("입력하신 다음 '" + scores[i] + "' 점수는 허용 범위 밖입니다.");
                i--;
            }
        }
        System.out.println("---------------------------");
        
        for(int i = 0; i < scores.length; i++) {
            sum += scores[i];
        }
        
        average = (double)sum / scores.length;
        
        for(int i = 0; i < scores.length; i++) {
            
            if(max < scores[i]) {
                max = scores[i];
            }
            
            if(0 == i) {
                min = scores[i];
            }
            
            if(min > scores[i]) {
                min = scores[i];
            }
            
        }
        System.out.println("총합은 다음과 같습니다 : " + sum);
        System.out.println("---------------------------");
        System.out.println("평균은 다음과 같습니다 : " + average);
        System.out.println("---------------------------");            
        System.out.println("최고점수는 다음과 같습니다 : " + max);
        System.out.println("---------------------------");
        System.out.println("최저점수는 다음과 같습니다 : " + min);
        
        // 배열 정렬하기 : 교환정렬
        // 이웃한 값을 비교해서 값을 바꾼다는 것(알고리즘).
        
        if(0 == students % 2) {
            
            int medium         = students / 2;
            int medium_up     = (int) (medium + 0.5);
            int medium_down = (int) (medium - 0.5);
            
            int tmp = 0;
            
            for(int i = 0; i < scores.length; i++){
                
                for(int j = i + 1; j < scores.length; j++) {
                    
                    if(scores[i] > scores[j]) {
                        tmp = scores[i];
                        scores[i] = scores[j];
                        scores[j] = tmp;
                    }    
                }
            }
            double midfinal = (double) (scores[medium_up] + scores[medium_down]) / 2
            System.out.println("중간값은 '" + midfinal + "' 입니다.");    
            
        } else {
            int tmp = 0;
            
            for(int i = 0; i < scores.length; i++){
                
                for(int j = i + 1; j < scores.length; j++) {
                    
                    if(scores[i] > scores[j]) {
                        tmp = scores[i];
                        scores[i] = scores[j];
                        scores[j] = tmp;
                    }    
                }
                
                //정렬과정을 보여주기 위한 임시코딩.
                for(int k = 0; k < scores.length; k++) {
                    System.out.print(scores[k] + " ");
                }
                System.out.println();
                
            }
            int midIndex = students / 2;
            System.out.println("중간값은 '" + scores[midIndex] + "' 입니다.");    
        }
        
        scan.close();
    }
}
 
cs

 

Code Review

1. ArrayList would have been more convenient, but it was an experiment to work with Array.
2. The practice was closer to C than Java in terms of using Array.

BELATED ARTICLES

more