자바 기초) 2차 배열 활용 퀴즈 : 학생 성적관리 프로그램3

박대현·2023년 1월 25일
0

자바 기초 활용

목록 보기
7/22

2차 배열을 활용한 학생 점수 관리 프로그램

접근방법
1. 학생 수를 입력받을 변수 초기화
2. 학생들의 점수를 저장할 배열을 만든다.
3. 프로그램이 계속 실행 되도록 한다.
4. 메뉴별 기능을 구현한다.

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
        // 1. 학생 수를 입력받을 변수 초기화
		int stuNo = 0;
        
		// 2. 학생들의 점수를 저장할 배열을 만든다.
		int[][] students = null;//학생 별 국어, 영어, 수학 점수를 입력받도록 2차 배열을 사용한다.
		Integer[] total = null; //내림차순 정렬 함수를 사용하기위해 변수로 Integer를 사용한다.                                                
		boolean loop = true;
        
        
		// 3. 프로그램이 계속 실행 되도록 한다.
		while (loop) {
        // 4. 메뉴별 기능을 구현한다.
			System.out.println("---------------------------------------------------------------------------------");
			System.out.println(" 1. 학생 수 | 2. 점수 입력( 국, 영, 수 ) | 3. 점수 리스트 | 4. 분석( 점수 총점을 내림차순으로 나타냄 ) | 5. 종료");
			System.out.println("---------------------------------------------------------------------------------");
			System.out.println("선택:");
			int sel = sc.nextInt();
			// 4. 메뉴별 기능을 구현한다.
			switch (sel) {
			case 1:// 학생 수 입력
				System.out.println("학생 수를 입력 하시오.");
				stuNo = sc.nextInt();//학생 수 입력 받음
				students = new int[stuNo][3];//학생 수만큼 점수를 저장할 배열 크기를 만든다.
				total = new Integer[stuNo];  //학생 수만큼 총점을 저장할 배열 크기를 만든다.
				break;
			case 2:// 점수 입력
				if (students == null) {//학생 수를 입력하지 않았다면 경고문과 함께 되돌아간다.
					System.out.println("먼저 학생 수를 입력해 주세요.");
					break;
				}
				for (int i = 0; i < students.length; i++) {//배열 행의 크기만큼 반복되게 한다.
					System.out.println("학생["+i+"]" + "의  점수 입력 (국 ,영 ,수 순서 대로)");
					for (int j = 0; j < students[i].length; j++) {//배열 열의 크기만큼 반복되게 한다.
						if(j==0) {//국어 점수 입력할 순서
							System.out.println("국어 점수 입력:");
						}
						else if(j==1) {//영어 점수 입력할 순서
							System.out.println("영어 점수 입력:");
						}
						else if(j==2) {//수학 점수 입력할 순서
							System.out.println("수학 점수 입력:");
						}
						students[i][j] = sc.nextInt();//학생 별 국어, 영어, 수학 점수를 입력받는다.
					}
				}
				break;
			case 3:// 점수 리스트 출력
				if (students == null) {//학생 수를 입력하지 않았다면 경고문과 함께 되돌아간다.
					System.out.println("먼저 학생 수를 입력해 주세요.");
					break;
				}
				for (int i = 0; i < students.length; i++) {
					total[i] = 0;// 학생별 총점을 저장할 공간을 0으로 초기화한다.
				}
				for (int i = 0; i < students.length; i++) {
					System.out.println(i + "의  점수 출력 (국, 영, 수, 총합  순서 대로)");
					for (int j = 0; j < students[i].length; j++) {
						total[i] += students[i][j];//학생 별 총 점수를 합한다.
						System.out.print(students[i][j] + " "); //학생별 국어, 영어, 수학 점수를 나타낸다.
					}
					System.out.print(total[i]);//수학 점수에 이어서 학생의 총점이 나타난다.
					System.out.println();
				}
				break;
			case 4:// 분석( 학생들의 총점을 내림차순으로   출력 )
				if (students == null) {
					System.out.println("먼저 학생 수를 입력해 주세요.");
					break;
				}
				
				System.out.println("학생들의 총합 점수를 내림차순으로 정렬");
				Arrays.sort(total, Collections.reverseOrder());//Collections.reverseOrder() 함수를 사용하여 내림차순으로 정렬시킨다.
				for(int i=0;i<total.length;i++) {
					System.out.println((i+1) + "등 : " + total[i]);
					
				}
				break;
			case 5:// 종료
				System.out.println("프로그램을 종료합니다.");
				loop = false;// loop의 값이 false로 변경되므로  while 문이 종료된다.
				break;
			default:// else 처리
				System.out.println("1 ~ 5 번 중에 선택하세요.");
				break;
			}
            sc.close();
		}
	}
}

0개의 댓글