NAVER

질문 자바 성적처리 프로그램 질문합니다~
비공개 조회수 1,432 작성일2015.11.18
package example4;

import java.util.Random;

public class practice {

public static void main(String args[]) {
Random p = new Random();

// 제목//
System.out.println(
"====================================================★성적표★======================================================");
String name1[] = { "          성명                   ", "국어  ", "영어 ", "                  수학",
" 사회", " 과학", " 총점", " 평균",
"    석차" };
for (String a : name1)
System.out.printf("%10s ", a);
System.out.println("");

System.out.println(
"================================================================================================================");

// 변수선언//
int[][] arr = new int[5][5];
int i, j;
int[] sum = new int[5]; // 행의 총합계
double[] avg = new double[5]; // 행의 총평균
int[] rank = { 1, 1, 1, 1, 1 }; // 석차

// 이름//
String name[] = { "김승연       || ", "안일기       || ", "박찬영       || ", "양승철       || ", "박수용       || " };

// 출력//

for (i = 0; i < arr.length; i++) {
System.out.printf("%13s ", name[i]);
for (j = 0; j < arr.length; j++) {

arr[i][j] = p.nextInt(100);
// 난수로 점수출력
System.out.printf(" %5d     ", arr[i][j]);
// 합계
sum[i] += arr[i][j];
// 평균
avg[i] = sum[i] / 5;
// 석차
if (avg[i] < avg[j])
rank[i]++;

}
// 합계 출력
System.out.printf("%5d     ", sum[i]);

// 평균 출력
System.out.printf("%5f", avg[i]);
// 석차 출력
System.out.printf("%5d", rank[i]);
System.out.println("");

}

}
}


 

 
일단 소스랑 실행결과인데요 아직 빤듯하게 정렬은 안해서 알아보기 힘드시겠지만
파란건 신경 안쓰셔도되고 노란색으로 칠한부분이 석차거든요 근데 1,2,3,4,5 이렇게만 나오네요

수정좀 해주세요ㅠㅠ
이유까지 말씀해주시면 더 좋구요
내공 100
프로필 사진

답변자님,

정보를 공유해 주세요.

1 개 답변
1번째 답변
프로필 사진
tonk****
태양신
자바, JSP 6위, 자바스크립트 13위, 개인정보보호 분야에서 활동
본인 입력 포함 정보

몇가지 틀린 부분있습니다.  sum[i] += arr[i][j]; 과목점수를 합산하고 있는데 계속 나누어 주는 것은 avg[i] = sum[i] / 5; 같은 작업을 반복하게 되는 겁니다. 따라서 효율적이지 않고 석차는 결국 평균이든 합산이든 최종 값을 가지고 비교하는 것인데 한줄에 값을 출력 그 다음에 값을 출력한다면 비교를 할 수가 없습니다. 따라서 먼저 값을 배열에 다 넣어 놓고 그 다음에 석차를 구해야 합니다. 석차는 비교 대상보다 높은 점수를 가질 경우 하나씩 빼주면 결국 가장 높은 점수를 가지는 게 1위가 되는 식입니다.


(1) 실행소스


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
package nhn.etc.java11;
 
import java.util.Random;
 
public class practice {
 
    public static void main(String args[]) {
 
        Random p = new Random();
 
        // 제목//
 
        System.out
                .println(
                "====================================="
                + "===============★성적표★============="
                + "=========================================");
 
        String name1[] = { "성명 ""국어 ""영어 ","수학",
                "사회"" 과학""총점"" 평균",
                "석차" };
 
        for (String a : name1)
            System.out.printf("%15s\t", a);
        
        System.out.println("");
        System.out
                .println(
                "===================================="
                + "==================================="
                + "=========================================");
 
        // 변수선언//
        int[][] arr = new int[5][5];
        int i, j;
 
        int[] sum = new int[5]; // 행의 총합계
        double[] avg = new double[5]; // 행의 총평균
        int[] rank = { 66666 }; // 석차
 
        // 이름//
        String name[] = { "김승연||""안일기||""박찬영||",
                "양승철||""박수용||" };
        
        // 점수 입력
        for (i = 0; i < arr.length; i++) {
            for (j = 0; j < arr.length; j++) {
                arr[i][j] = p.nextInt(100);
                // 합계
                sum[i] += arr[i][j];
                // 평균
            }
 
            avg[i] = sum[i] / 5;
        }
    
        // 석차 구하기 
        for(i = 0; i < arr.length; i++) {
            for(j = 0; j < arr.length ; j++) {
                if(sum[i] >= sum[j]) {
                    rank[i]--;
                }
            }
        }
        
        // 출력//
        for (i = 0; i < arr.length; i++) {
            System.out.printf("%11s \t", name[i]);
            
            // 난수로 점수출력
            for (j = 0; j < arr.length; j++) {
                System.out.printf("%5d\t\t", arr[i][j]);
            }
            // 합계 출력
            System.out.printf("%5d\t\t", sum[i]);
 
            // 평균 출력
            System.out.printf("%5f\t", avg[i]);
 
            // 석차 출력
            System.out.printf("%5d\t\t", rank[i]);
            System.out.println("");
        }
    }
}
cs


(2) 실행결과



 

2015.11.18.

  • 채택

    질문자가 채택한 답변입니다.

도움이 되었다면 UP 눌러주세요!
UP이 많은 답변일수록 사용자들에게 더 많이 노출됩니다.