본문 바로가기
##JAVA

객체배열(ObjectArray) 실습문제(Student)

by 운중동토토로 2024. 7. 10.

package com.kh.practice.student.model.vo;

public class Student {

	private String name;
	private String subject;
	private int score;

	public Student() {
	}

	public Student(String name, String subject, int score) {
		this.name = name;
		this.subject = subject;
		this.score = score;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getSubject() {
		return subject;
	}

	public void setSubject(String subject) {
		this.subject = subject;
	}

	public int getScore() {
		return score;
	}

	public void setScore(int score) {
		this.score = score;
	}

	public String inform() {
		return "이름 : " + name + "/ 과목 : " + subject + "/ 점수 : " + score;
		//return String.format("이름 : %s / 과목 : %s / 점수 : %d", name, subject, score);
	}
}
package com.kh.practice.student.controller;

import com.kh.practice.student.model.vo.Student;

public class StudentController {
	//5개의 객체배열을 위의 샘플 데이터의 값으로 초기화 해주는 기본 생성자 
	private Student[] sArr = new Student[5];
	public static final int CUT_LINE = 60;
	
	public StudentController() {
		//방법1
		//Student s0 = new Student("김길동", "자바", 100);
		//Student s1 = new Student("박길동", "디비", 50);
		//Student s2 = new Student("이길동", "화면", 85);
		//Student s3 = new Student("정길동", "서버", 60);
		//Student s4 = new Student("홍길동", "자바", 20);
		//방법 2
		sArr[0] = new Student("김길동", "자바", 100);
		sArr[1] = new Student("박길동", "디비", 50);
		sArr[2] = new Student("이길동", "화면", 85);
		sArr[3] = new Student("정길동", "서버", 60);
		sArr[4] = new Student("홍길동", "자바", 20);
		
		// sArr[0] ---> Student s0 = new Student("김길동", "자바", 100);
		}
	
	//getter의 역할을 하는 메소드
	public Student[] printStudent() {
		return sArr;
	}
	public int sumScore() {
		//객체 배열의 점수의 합을 반환
		//Student 클래스에 점수를 저장하는 변수 score
		int total = 0;
		
		//방법1
		for(int i=0; i<sArr.length; i++) {
			total += sArr[i].getScore();
		}
		return total;
		/*
		 * 방법2 : 향상된 for문
		 * int t2=0;
		 * for(Student s : sArr){
		 * 		t2 += s.getScore();
		 * }
		 */
	}
	public double[] avgScore() {
		//1. double 배열을 만들기
		double[]avg = new double[2];
		//2. sumScore의 리턴값을 0번째 인덱스에 저장
		avg[0]= sumScore();
		avg[1]= sumScore()/ sArr.length;
		//3. 합의 평균을 1번째 인덱스에 저장
		//4.배열리턴
		return avg;
	}
}
package com.kh.practice.student.view;

import com.kh.practice.student.controller.StudentController;
import com.kh.practice.student.model.vo.Student;

public class StudentMenu {

	private StudentController ssm = new StudentController();

	public StudentMenu() {
		// 학생정보와 성적, 결과 출력하는 기본생성자
		// StudentController printStudent()의 반환 값을 통해 학생 정보 출력
		System.out.println("========== 학생 정보 출력 ==========");
		Student[] sArr = ssm.printStudent();
		for (int i = 0; i < sArr.length; i++) {
			String info = sArr[i].inform();
			System.out.println(info);
		}
		// 향상된 for문으로 사용해보기
		// for(Student s : sArr){
		// String info = s.inform();
		// System.out.println(info);
		// }

		// StudentController에 avgScore()를 통해 점수 합계와 평균 출력
		System.out.println("========== 학생 성적 출력 ==========");
		double[] avg = ssm.avgScore();
		System.out.println("학생 점수 합계 : " + (int) avg[0]);
		System.out.println("학생 점수 평균 : " + avg[1]);
		
		
		// 학생의 점수가 CUT_LINE 미만이면 재시험 대상, 이상이면 통과 출력
		System.out.println("========== 성적 결과 출력 ==========");
		int cutLine = StudentController.CUT_LINE;
		for (int i = 0; i < sArr.length; i++) {
			if (sArr[i].getScore() < cutLine) {
				System.out.println(sArr[i].getName() + "학생의 재시험 대상입니다.");
			} else {
				System.out.println(sArr[i].getName() + "학생은 통과입니다.");
			}
		}
	}
}
package com.kh.practice.student.run;

import com.kh.practice.student.view.StudentMenu;

public class Run {

	public static void main(String[] args) {

		StudentMenu sm = new StudentMenu();
		
	}

}