프로그래밍/JAVA

java 과목별 점수+합계+평균 구하기 예시,설명

Cognivox 2025. 4. 9. 12:51
반응형

코드

설명 

 

📦 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