본문 바로가기
자바과정/과제물

(Java) 성적처리프로그램(3차원 배열사용)

by Parkej 2021. 2. 2.
import java.util.Scanner;

public class Array33 {

	public static void main(String[] args) {
		// 3차원 배열 사용
		// 한 반당 몇명?
		// 각 반에의 학생 수와 그 학생들의 성적 입력 후 출력
		
		int []room; // 반을 나타내는 배열
		String [][]name; // 반과 이름
		int [][][]score; // 해당 반 학생의 성적
		float [][]avg; 
		
		int n,n2=0; // 교실수 입력 변수와 반의 수 구분짓는 변수
		Scanner sc = new Scanner(System.in);
		
		System.out.print("교실수 입력 : ");
		n = sc.nextInt();
		room = new int[n]; // 교실 수 배열의 크기 선언
		
		for(int i=0;i<n;i++) {
			System.out.printf("%d반의 학생 수는? : ", i+1);
			room[i] = sc.nextInt(); // 각 반의 학생 수
			n2 += room[i]; // 총 학생 수
		}
		
		name = new String[n][n2];
		score = new int[n][n2][4];
		avg = new float[n][n2];

		for(int i=0;i<n;i++) { // 총 교실 수로 회전
			for(int j=0;j<room[i];j++) { // 각 반마다 있는 학생의 수로 회전
				System.out.printf("%d반의 %d번째 학생 이름 : ", i+1, j+1);
				name[i][j] = sc.next();
				for(int k=0;k<(score[i][j].length)-1;k++) {
					System.out.printf("%s 학생 국 영 수 성적 입력 : ", name[i][j]);
					score[i][j][k] = sc.nextInt();
					score[i][j][3] += score[i][j][k];
				}
				avg[i][j] = score[i][j][3]/3.f;
			}
		}
		
		for(int i=0;i<n;i++) {
			for(int j=0;j<room[i];j++) {
			System.out.println(" 반 : " + (i+1));
 			System.out.println("이름 : " + name[i][j]);
 			System.out.println("국어 : " + score[i][j][0]);
 			System.out.println("영어 : " + score[i][j][1]);
 			System.out.println("수학 : " + score[i][j][2]);
 			System.out.println("총점 : " + score[i][j][3]);
 			System.out.println("평균 : " + avg[i][j]);
 			System.out.println();
			}
			System.out.println("=========================");
		}	
	}

}

입력 
출력
개발로 그린 3차원 배열 구조

 

반응형

댓글