국비지원 JAVA 풀스택 과정/JAVA

[JAVA] 반 학생의 총점과 평균, 최고 점수와 최저 점수 구하는 프로그램

ODaram 2022. 10. 12. 17:47
	배열에서 반드시 알아야 하는 내용
	 1. 배열은 이름이없는 '비연속적인 데이터들의 묶음' 이다.
	  2. 배열 안의 특정 데이터에 접근하고 싶다면 '인덱스 번호'를 이용한다.
	  3. 인덱스 번호(연속적인 루사집로 배열의 '루프를 이용'하면 배열에 값을 저장하고 얻어오는데 편리하다.
	  4. 배열의 'length'를 이용하면 배열의 길이(크기)를 알 수 있다.
	  
	  배열에서 많이 실수하는 내용
	  java.lang.ArrayIndexOutOfBoundException: 배열의 크기를 넘어서는 경우 오류 발생
	  인덱스 번호는 0부터 시작한다.

package com.dream.array;
import java.util.Arrays;
import java.util.Scanner;

// 반 학생들의 총원과 수학 점수를 각각 입력받아 
// 총점과 평균, 최고 점수와 최저 점수를 구하는 프로그램
// 총원 : 연속적인 숫자 , 수학 점수 : 비연속적인 숫자 , 총점(연산결과-하나) , 평균(연산결과-하나), 최고점수 (하나), 최저 점수(하나) 
public class ArrayEx04 {
	public static void main(String[] args) {
//		1. 변수 선언 단계
		int num =0, max=0, min=0;
		double total=0, avg=0;
		Scanner sc = new Scanner(System.in);
		
//		2. 메시지를 출력하고 콘솔뷰에서 데이터를 입력받는 단계
		System.out.println("반 학생의 총원과 수학 점수를 각각 입력받아 총점과 평균, 최고 점수와 최저 점수를 구하는 프로그램");
		
		System.out.println("학생 총원을 입력하세요.");
		System.out.print("총원 : ");
		num = sc.nextInt();
		
		double[] math = new double[num];	//사용자에게 입력받은 총원을 배열의 크기로 지정한다.
		
//		3. 키보드로 수학 점수를 입력받아 배열안에 저장한다.
		
		for(int i=0; i<math.length; i++) {
			System.out.print((i+1)+"번 째 학생의 수학 점수 입력 : ");
			math[i] = sc.nextDouble();	//입력한 수학 점수를 각각 저장한다.
		}
		
//		4. 반 학생들의 수학점수를 출력한다.
		System.out.println("\n학생들의 수학점수 : "+Arrays.toString(math)); //반복문을 사용하지 않고 배열의 데이터를 간단히 출력한다
		
//		5. 수학점수(math 배열)의 총점, 평균을 출력한다.
		for(int i=0; i<math.length; i++) {
			total += math[i];
		}
		avg = total/num;
		System.out.println("\n반 학생의 총원: " +num+"명 \n총점 : "+total+" 평균 : "+avg);
		
//		6. 최고 점수를 구한다.
		for(int i=0; i<math.length; i++) { //i=학생 번호
			if(math[i] > max) {
				max = (int)(math[i]);
			}
		}
		System.out.println("최고 점수: "+max);
		
//		7. 최저 점수를 구한다.
		min=max;
		for(int i=0; i<math.length; i++) {
			if(min > math[i]) {
				min = (int)(math[i]);
			}
		}
		System.out.println("최저 점수 : "+min);
		
	}
}