반응형
코드
설명
📦 package com.java.array;
- package: Java에서 **파일이 어떤 폴더(이름 공간)**에 있는지를 나타냄.
- com.java.array: com/java/array 폴더에 있다는 뜻.
👉 회사/도메인.카테고리.기능 순으로 짓는 게 일반적임.
예: com.naver.news, com.google.login 처럼.
📚 import java.text.DecimalFormat;
- import: 외부에서 만들어진 **기능(클래스)**를 불러오는 키워드.
- java.text.DecimalFormat: 숫자를 원하는 형식으로 바꿔주는 클래스.
👉 예: 5 → 005, 12.345 → 12.3 이렇게 만들 수 있음.
📚 import java.util.Arrays;
- Arrays: 배열을 쉽게 다룰 수 있게 도와주는 유틸리티 클래스.
👉 배열 정렬, 복사, 비교 등을 쉽게 할 수 있음.
📚 import java.util.Collections;
- Collections: 배열이나 리스트 등을 정렬할 때 사용하는 도구.
👉 reverseOrder()로 역순 정렬할 때 쓰려고 불러온 거임.
🧠 public class Quiz_Score {
- public: 이 클래스는 어디서든 접근 가능하다는 뜻.
- class: Java에서 프로그램을 만드는 기본 단위(설계도).
- Quiz_Score: 클래스 이름 (보통 대문자로 시작)
🚀 public static void main(String[ ] args) {
- 자바 프로그램이 실행될 때 가장 먼저 시작하는 함수.
- public: 어디서든 호출 가능
- static: 객체를 만들지 않아도 실행 가능
- void: 리턴값 없음
- main: 프로그램 시작점
- String[] args: 명령어 인자값 받을 때 사용 (여기선 사용 안함)
🏷️ final String[ ] SCORE_LABEL = { "국어", "영어", "수학", "과학", "총점", "평균", "석차" };
- final: 변경 불가능한 값(상수). 한 번만 설정 가능.
- String[]: 문자열 배열 (예: ["국어", "영어", ...])
- SCORE_LABEL: 과목과 계산 결과 이름들
- 총점, 평균, 석차도 점수처럼 처리하기 위해 포함
🔢 final int SCORE_NUM = 4;
- SCORE_NUM: 성적 입력받을 과목 수
- 4과목만 점수를 받음 → 총점, 평균, 석차는 계산으로 추가
👥 final int STUDENT_NUM = 5;
- 5명의 학생 정보 처리하겠다는 뜻
🎓 String[ ] name = new String[STUDENT_NUM];
- 학생 이름을 저장할 배열 선언
- 크기는 학생 수만큼(5)
📊 float[ ][ ] scoreData = new float[STUDENT_NUM][SCORE_LABEL.length];
- 학생 수 × 점수 항목 수 (7개 항목: 국영수과 + 총점, 평균, 석차)
- 2차원 배열: [학생 번호][점수 항목]
📑 String[ ] scoreIndex = new String[STUDENT_NUM];
- 석차를 정렬하기 위해 필요한 임시 배열
- 총점을 문자열 + 인덱스로 저장 (예: "285$3")
✍️ Scanner scann = new Scanner(System.in);
- 키보드로 입력 받기 위한 Scanner 객체 생성
🔄 입력 반복문 시작

- 학생 수만큼 반복
- i는 학생 번호 인덱스 (0부터 시작)
🙋♀️ 이름 입력

- (i+1)은 사용자에게 보기 좋게 1번부터 출력
- 이름은 scann.nextLine()으로 입력 받음
📘 과목 점수 입력

- 국어~과학까지 점수 입력
- 입력값을 int → float으로 변환해서 저장
🧮 총점 계산

- scoreData[i][SCORE_NUM] → 총점 저장 칸
- 과목 점수들을 하나씩 더함
📐 평균 계산

- 평균 = 총점 ÷ 과목수
- SCORE_NUM + 1 위치에 저장 (즉, 5번째 칸)
🔄 평균 반올림 처리

- 0.05를 더해서 소수 둘째 자리 반올림
- 10을 곱한 뒤 int로 잘라서 소수 첫째 자리까지만 유지 👉 예: 82.45 → 82.5
🏆 석차 계산을 위한 문자열 변환

- 총점을 3자리 수 문자열로 만듦 (예: 87 → "087")
- $인덱스 형식으로 저장 (정렬 후 누구 점수였는지 알기 위해)
🧷 역순 정렬

- 문자열 배열을 높은 총점 기준으로 정렬
- 높은 점수가 먼저 오도록 내림차순(reverseOrder)
📌 석차 저장

- 석차는 1등부터 i+1
- 원래 학생 순서에 맞춰 다시 점수 배열에 저장
📢 출력: 성적표 타이틀

- SCORE_LABEL.length-1인 이유: 석차는 마지막에 따로 있으므로 제외
📋 성적표 본문 출력

- index를 통해 정렬된 순서대로 출력
- 평균은 소수이므로 (int) 변환 없이 출력
🧼 자원 정리

- Scanner는 메모리 자원이므로 다 쓴 후 close() 해줘야 함
반응형
'프로그래밍 > JAVA' 카테고리의 다른 글
java 쇼핑몰 콘솔 프로그램 예시 (0) | 2025.04.09 |
---|---|
java 메소드 (0) | 2025.04.09 |
System.arraycopy()란? (1) | 2025.04.08 |
java 자바로 알고리즘을 만들 수 있을까 ? (0) | 2025.04.08 |
깃발 변수(Flag Variable) (0) | 2025.04.08 |