기초JAVA 10강 - TEST

Whatever·2021년 9월 17일
0

기초 JAVA

목록 보기
10/26

손코딩 적기 테스트
다차원배열

public static void main(String[] args) {
	String[] names = {"허지영", "김민지", "김동민", "배현태", "여인욱", "김동희", "김인혁", "이영섭", "정선영", "이지향", "김용진"};
	String[] subjects = {"국어", "영어", "수학", "사회", "과학", "Oracle", "Java"};
	int[][] score = new int[names.length][subjects.length];
	
	for(int i = 0; i < score.length; i++){
		for(int j = 0; j < score[i].length; j++){
			score[i][j] = (int)(Math.random() * 101);
		}
	}
	
	int[] nameSum = new int[score.length];
	double[] nameAvg = new double[score.length];
	for(int i = 0; i < score.length; i++){
		for(int j = 0; j < score[i].length; j++){
			nameSum[i] += score[i][j];
		}
		nameAvg[i] = Math.round((double)nameSum[i] / subjects.length * 100) / 100.0;
	}
	
	int[] subSum = new int[subjects.length];
	double[] subAvg = new double[subjects.length];
	for(int i = 0; i < subjects.length; i++){
		for(int j = 0; j < score.length; j++){
			subSum[i] += score[j][i];
		}
		subAvg[i] = Math.round((double)subSum[i] / score.length * 100) / 100.0;
	}
	
	int[] rank = new int[score.length];
	for(int i = 0; i < score.length; i++){
		rank[i] = 1;
		for(int j = 0; j < score.length; j++){
			if(nameSum[i] < nameSum[j]){
				rank[i]++;
			}
		}
	}
	
	//석차순으로 정렬(시험에서 출제되지 않음)
	for(int i = 0; i < nameSum.length - 1; i++){
		int min = i;
		for(int j = i + 1; j < nameSum.length; j++){
			if(nameSum[j] > nameSum[min]){
				min = j;
			}
		}
		int[] temp = score[i];
		score[i] = score[min];
		score[min] = temp;
		
		int temp2 = nameSum[i];
		nameSum[i] = nameSum[min];
		nameSum[min] = temp2;
		
		double temp3 = nameAvg[i];
		nameAvg[i] = nameAvg[min];
		nameAvg[min] = temp3;
		
		int temp4 = rank[i];
		rank[i] = rank[min];
		rank[min] = temp4;
		
		String temp5 = names[i];
		names[i] = names[min];
		names[min] = temp5;
	}
	
	System.out.print("이름");
	for(int i = 0; i < subjects.length; i++){
		System.out.print("\t" + subjects[i]);
	}
	System.out.println("\t합계\t평균\t석차");
	for(int i = 0; i < score.length; i++){
		System.out.print(names[i] + "\t");
		for(int j = 0; j < score[i].length; j++){
			System.out.print(score[i][j] + "\t");
		}
		System.out.println(nameSum[i] + "\t" + nameAvg[i] + "\t" + rank[i]);
	}
	
	System.out.print("과목합계\t");
	for(int i = 0; i < subSum.length; i++){
		System.out.print(subSum[i] + "\t");
	}
	System.out.println();
	
	System.out.print("과목평균\t");
	for(int i = 0; i < subAvg.length; i++){
		System.out.print(subAvg[i] + "\t");

0개의 댓글

Powered by GraphCDN, the GraphQL CDN