Java 배열 점수 구하기

조수경·2021년 9월 16일

/*

* 402호 모두의 국어, 영어, 수학, 사회, 과학, Oracle,Java 점수를

* 0~100의 랜덤으로 생성하고 아래와 같이 출력해주세요

  * 
  *           국어       영어       수학     사회      과학      Oracle   Java    합계       평균       석차
  * 홍길동            90     90    90    90    90     90      90     630   90.00   1
  * 홍길동            90     90    90    90    90     90      90     630   90.00   1
  * 홍길동            90     90    90    90    90     90      90     630   90.00   1
  * 홍길동            90     90    90    90    90     90      90     630   90.00   1
  * 홍길동            90     90    90    90    90     90      90     630   90.00   1
  * 과목합계        450    450   450   450   450    450     450  
  * 과목평균      90.00  90.00 90.00 90.00 90.00  90.00   90.00
  * 
  * 
  */
	
	
       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]; // j가 바로 바로 바뀌는 가로값을 더한것
		}
		nameAvg[i] = Math.round((double)nameSum[i] / subjects.length * 100) / 100.0;
		//평균은 합계를 과목 길이로 나눈것(소숫점 2째자리 까지 표현한것)
	}
    
    //과목 합계, 과목 평균 구하기 
        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];// i가 바로 바로 바뀌는 가로값을 더한것
		}
		subAvg[i] = Math.round((double)subSum[i] / score.length * 100) / 100.0;
		//과목 평균은 과목 합계를 과목 길이로 나눈것(소숫점 2째자리 까지 표현한것)
	}
	
	//석차구하기
	int[] rank = new int[score.length];    //사람 수 만큼 석차 구하기
	for(int i = 0; i < score.length; i++){
		rank[i] = 1;     //석차에 기본값으로 1을 준것
		for(int j = 0; j < score.length; j++){
			if(nameSum[i] < nameSum[j]){
				rank[i]++;
			}
		}
	}
    
     //나머지 출력
	System.out.print("이름");//이름 쓰고
	for(int i = 0; i < subjects.length; i++){//과목 길이 만큼
		System.out.print("\t" + subjects[i]);//과목 배열 탭하면서 나열
	}
	System.out.println("\t합계\t평균\t석차"); //  \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]); // 합계\t 평균\t석차를 출력하고 다음줄
	}
	
	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"); //과목 평균 가로로 출력
	}
	
	
	
profile
신입 개발자 입니다!!!

0개의 댓글