JAVA/java 실습

[자바JAVA] 이차원 배열 , 점수 총점 평균을 표처럼 나타내기

자바칩 프라푸치노 2020. 10. 6. 07:43

문제 - 과목별 점수를 통해 총점, 평균을 구하여 표형태로 출력해보자.

전체 코드 - 더보기 클릭

 

더보기

 

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
public class Array_Ex2 {
 
    public static void main(String[] args) {
        int[][] score = new int[][] {
                                    {100,100,100},
                                    {20,20,20},
                                    {30,30,30},
                                    {40,40,40},
                                    {50,50,50}
                                };
        
                                
        //과목별 총점
        int korTotal = 0;
        int engTotal = 0;
        int mathTotal = 0;
        
        int totalSum = 0;
        double avg = 0.0;
        
        System.out.println("번호\t국어\t영어\t수학\t총점\t평균");
        System.out.println("--------------------------------------------");
        
        for (int i = 0; i < score.length; i++) {
            int sum = 0;//개인별 총점
            double average = 0.0//개인별 평균
            
            korTotal += score[i][0]; //국어 점수 누적
            engTotal += score[i][1];//영어 점수 누적
            mathTotal += score[i][2];//수학 점수 누적
            
            //번호를 3개 자리를 차지하며 출력시키는 부분
            System.out.printf("%3d", (i+1)); //번호 출력
            
            for (int j = 0; j < score[i].length; j++) {
                sum += score[i][j];
                System.out.printf("\t%d", score[i][j]);//tap만큼 띄우기
                
            }
            
            totalSum += sum;//총합
            average = (double)sum/score[i].length;//개인별 평균
            avg += average;//전체 평균
            System.out.printf("\t%d \t%.2f\n", sum, average);
                    
            
        }
        
        avg /= (double)score.length;
        System.out.println("------------------------------------------------");
        System.out.printf("총점\t%d\t%d\t%d\t%d\t%.2f", korTotal, engTotal,mathTotal,totalSum,avg);
        
    }
 
}
 
cs

 

 

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
public class Array_Ex2 {
 
    public static void main(String[] args) {
        int[][] score = new int[][] {
                                    {100,100,100},
                                    {20,20,20},
                                    {30,30,30},
                                    {40,40,40},
                                    {50,50,50}
                                };
        
                                
        //과목별 총점
        int korTotal = 0;
        int engTotal = 0;
        int mathTotal = 0;
        
        int totalSum = 0;
        double avg = 0.0;
        
        System.out.println("번호\t국어\t영어\t수학\t총점\t평균");
        System.out.println("--------------------------------------------");
        
        
    }
 
}
 
cs

먼저 int 2차원 배열로 값들을 초기화해주었습니다.

여기서 score의 길이는 5이고

score[0]의 길이는 3입니다.

(score[1], score[2].. 도 마찬가지)

 

과목별 총점들을 선언과 초기화해주었습니다.

 

요까지하면

이렇게 나옵니다.

그러면 다시 문제를 한번 봅시다.

 

찬찬히 살펴보면

먼저 번호를 찍고 국어점수 찍고 영어점수 찍고 수학점수 찍고 총점 찍고 평규찍고 한칸 띄우고

번호 찍고 ~~ 5번 반복입니다.

그러니까 for문은 score.length만큼 돌아야겠네요

 

그리고 총점은 score[0] 의 값들을 모두 더한 값

score[1] 의 값을 모두 더한 값이므로

score[0][0] score[0][1] score[2]를 모두 더한 값이 총점(sum)이구요

평균은 그 총점을 3으로 나누었네요

그러면 sum은 뒷자리가 바껴야 하니 이중 for문으로 돌리면 되겠구요

 

그리고 국어 총점은 

score[0][0] score[1][0] score[2][0] score[3][0] score[4][0] 을 모두 더한 값입니다.

그러면 korTotal은 앞자리가 바껴야하니 바깥 for문에서 돌리면 되겠습니다.

코드를 순차적으로 확인해보겠습니다.

바깥 for문은 score.length인 5만큼 돌고있습니다.

그리고 sum을 0으로 초기화 해주고

평균도 0.0으로 초기화합니다.

아까 말한대로 과목별 점수 누적은 바깥 for문으로 돌립니다.

 

번호를 출력합니다.

 

이중 for문은 score[i].length인 3만큼 돌리고있고

sum은 위에서 이야기 했듯이 이중 for문 안에서 돌립니다.

이중 for문으로 배열 안의 값들을 모두 출력합니다.

여기서는 i가 0일때 score[0][0] score[0][1] score[0][2] 까지 출력한다음

밑으로 내려갑니다

 

totalSum에 sum을 누적하고

average를 구하고

sum과 average를 출력하고 줄 띄움을 해줍니다.

여기서 비로소 바깥 for문 i =0 이 끝난 것입니다.

 

그럼 다시 바깥 for문 i ++ 해서 i=1 인 for문이 시작됩니다.

그렇게 다섯번을 돈 후

마지막줄을 출력해줍니다.

 

 

 

 
728x90