Array - 2차원 배열 (성적결과)

양혜정·2024년 1월 28일

Begin_java

목록 보기
38/71

1차원 배열

-> int[] subject_arr = new int[5]; // 1행 5열

		 	----------------------
	  값 ==> | 0 | 0 | 0 | 0 | 0 |
		 	----------------------
	index ==> 0   1   2   3   4
	

2차원 배열

-> int [][] point_arr = new int [4][3]; // 4행 3열

		값 ==>
	 		  --------------
  		 	  | 0 | 0 | 0 |
	 		  --------------
	 		  | 0 | 0 | 0 |
	 		  --------------
	 		  | 0 | 0 | 0 |
	 		  --------------
	 		  | 0 | 0 | 0 |
	 		  --------------
 	  index ==>
 	  		  -----------------------------		// Ex)			국어		영어		수학
 	  		  | [0][0] | [0][1] | [0][2] |		----------------------------------------				
 	  		  | [1][0] | [1][1] | [1][2] |		이순신의 점수 |				
 	  		  | [2][0] | [2][1] | [2][2] |		엄정화의 점수 | 				
 	  		  | [3][0] | [3][1] | [3][2] |		유관순의 점수 |
 	  		  -----------------------------		홍길동의 점수 |

-> int [][] num_arr = new int[4][]; // 4행 null 열 , 학생별 과목수를 다르게 줄 수 있다.
Ex) num_arr[1] = new int[2]; // 1행은 2열로 설정


jumsu_arr.length => 행의 길이 (사람수)
jumsu_arr[i].length => 열의 길이 (과목수)

- 성적결과

int [][] jumsu_arr = {{90,80,70},{80,85,76},{80,85,76},{85,70,90},{60,80,50}};
//						이순신		엄정화		홍길동			공유		아이유
int [] total_arr = new int[jumsu_arr.length];	// 학생들 총점 저장
String[] result_arr = new String[jumsu_arr.length];	// 등수제외한 성적결과 저장

for(int i=0; i<jumsu_arr.length; i++) { 	// .length를 통해 행 길이 파악 (사람)
	String result ="";
    int sum = 0;
    for(int j=0; j<jumsu_arr[i].length; j++) {	// jumsu_arr[i].length를 통해 열 길이 파악 (과목)
    result += jumsu_arr[i][j] + "\t";
    sum += jumsu_arr[i][j];
	}	// end of for--------------------------

	double avg = Math.round((double)sum/jumsu_arr[i].length*10)/10.0;	// 과목수를 나눠야한다.

	char grade = ' ';	// 기본값
	switch((int)avg/10) {	// switch는 정수(long 제외), char,string 타입만 가능
		case 10:
    	case 9:
    		grade = 'A';
        	break;
    	case 8:
        	grade = 'B';
        	break;
    	case 7:
        	grade = 'C';
        	break;
    	case 6:
        	grade = 'D';
        	break;
    	default:
        	grade = 'F';
        	break;
 	}	// end of switch()---------------
 result += sum + "\t" + avg + "\t" + grade + "\t";
 result_arr[i] = result;	// sum, avg, grade 배열 추가
 total_arr[i] = sum;
 }	// end of for----------------------------
 for(int i=0; i<total_arr.length; i++) {	// total_arr.length 는 사람수
 	int rank = 1;	// 기본값 설정
    for(int j=0; j<total_arr.length; j++) {
    	if(i != j && total_arr[i] < total_arr[j]) {	// i != j -> 자기자신과 할 필요 없음
        											// total_arr[i] < total_arr[j]
                                                    // 다른 값보다 자기가 작을 경우 (점수가 낮을 경우)
           rank++;
       }	// end of if-----------------
	}	// end of for-----------------------
System.out.println(result_arr[i] + rank);	// 기존 배열에 rank 배열 추가
}	// end of for----------------

- 과목별 총점 구하기 - 방법1

int sum_kor = 0,sum_eng = 0,sum_math = 0;
for(int i = 0;i < jumsu_arr.length; i++) {
	sum_kor += jumsu_arr[i][0];
	sum_eng += jumsu_arr[i][1];
	sum_math += jumsu_arr[i][2];
}	// end of for----------------------------
String subject_sum = "";
subject_sum+= sum_kor+"\t" + sum_eng+"\t" + sum_math;
System.out.println(subject_sum);

- 과목별 총점 구하기 - 방법2

int[] arr_subject_total = new int[jumsu_arr[0].length];	// 각 과목별 총점을 저장시켜두는 곳이다.
for(int i=0; i<arr_subject_total.length; i++) {
	for(int j=0; j<jumsu_arr.length;j++) {
		arr_subject_total[i] += jumsu_arr[j][i];
	}	// end of for-----------------------
}	// end of for-------------------------------

- 과목별 평균 구하기 - 방법1

double avg_kor = 0, avg_eng = 0, avg_math = 0;
avg_kor = Math.round((double)sum_kor/jumsu_arr.length*10)/10.0;
avg_eng = Math.round((double)sum_eng/jumsu_arr.length*10)/10.0;
avg_math = Math.round((double)sum_math/jumsu_arr.length*10)/10.0;		
System.out.println(avg_kor + "\t "+ avg_eng + "\t" + avg_math);

- 과목별 평균 구하기 - 방법2

String str_subject_total = "", str_subject_total_avg = "";
	for(int i =0; i<arr_subject_total.length;i++) {
		str_subject_total += arr_subject_total[i] + "\t";
		str_subject_total_avg 
        += Math.round((double)arr_subject_total[i]/jumsu_arr.length*10)/10.0 + "\t";
	}	// end of for----------------------
System.out.println(str_subject_avg);

정리

my.day09.a.twodimension.array -> Main_twodimension_array_1, Main_twodimension_array_2

0개의 댓글