public class Main {
public static void main(String[] args) {
GradeCalculator gradeCalc = new GradeCalculator("김신의", 4.0, 100);
gradeCalc.addCourse(new Course("OOP", Course.CREDIT_MAJOR, "A+"));
gradeCalc.addCourse(new Course("신호와시스템", Course.CREDIT_MAJOR, "A"));
gradeCalc.addCourse(new Course("해석학", Course.CREDIT_MAJOR, "B+"));
gradeCalc.addCourse(new Course("확률", Course.CREDIT_MAJOR, "A+"));
gradeCalc.addCourse(new Course("스포츠댄스", Course.CREDIT_GENERAL, "A"));
gradeCalc.print();
}
}
GradeCalculator.java
- 학점 계산 클래스
- 이름, 직전학기 점수평균, 총 이수학점
- 수강과목들을 ArrayList로 만들어 저장 및 과목 추가
- 이수학점총합 계산 메소드
- 이수과목 평균학점 계산 메소드
-총 이수과목 평균학점 계산 메소드
import java.util.ArrayList;
public class GradeCalculator {
private String name;
private double preSemeterGrade;
private int creditsTaken;
// 수강과목 리스트 생성
ArrayList<Course> courseToBeTaken = new ArrayList<>();
// 생성자 인수 : 이름, 직전학기 평점, 이수학점
public GradeCalculator (String name, double preSemeterGrade, int creditsTaken){
this.name = name;
this.preSemeterGrade = preSemeterGrade;
this.creditsTaken = creditsTaken;
}
// 수강과목 추가
public void addCourse (Course course){
courseToBeTaken.add(course);
}
// 이수학점 총합 계산 메소드
public int getTotalCredit (ArrayList<Course> courses){
int totalCredit = 0;
for (Course course: courses) {
totalCredit += course.getCredit();
}
return totalCredit;
}
// 이수과목의 평균학점 계산메소드
public double getAverageGrade (ArrayList<Course> courses){
double averageGrade = 0;
for (Course course: courses) {
averageGrade += course.getCredit() * course.getGradeToNum();
}
averageGrade = averageGrade / getTotalCredit(courses);
return averageGrade;
}
// 전체과목의 평균학점 계산 메소드
public double getTotalAverageGrade (ArrayList<Course> courses){
double averageGrade = 0;
for (Course course: courses) {
averageGrade += course.getCredit() * course.getGradeToNum();
}
averageGrade += preSemeterGrade * creditsTaken;
averageGrade = averageGrade / (getTotalCredit(courses) + creditsTaken);
return averageGrade;
}
// 전체 학점 출력
public void print(){
System.out.println("직전 학기 성적: "+this.preSemeterGrade+" (총 "+this.creditsTaken+"학점)");
System.out.println("이번 학기 성적: "+getAverageGrade(courseToBeTaken)+" (총 "+getTotalCredit(courseToBeTaken)+"학점)");
System.out.println("전체 예상 학점: "+getTotalAverageGrade(courseToBeTaken)+" (총 "+(getTotalCredit(courseToBeTaken)+creditsTaken)+"학점)");
}
}
Coures.java
- 과목 클래스
- 과목이름, 학점, 점수
- 점수를 숫자로 바꾸는 메소드
public class Course {
public static final int CREDIT_MAJOR = 3;
public static final int CREDIT_GENERAL = 2;
// 인스턴스 변수
private String subject;
private int credit;
private String grade;
// 클래스 생성자 : 과목, 학점, 점수
public Course(String subject, int credit, String grade) {
this.subject = subject;
this.credit = credit;
this.grade = grade;
}
// 이수학점 getter
public int getCredit() {
return this.credit;
}
// 문자점수를 숫자로 바꾸는 메소드
public double getGradeToNum() {
double gradeInt = 0;
if (this.grade.equals("A+")){
gradeInt = 4.5;
}else if (this.grade.equals("A")){
gradeInt = 4.0;
}
else if (this.grade.equals("B+")){
gradeInt = 3.5;
}
else if (this.grade.equals("B")){
gradeInt = 3.0;
}
else if (this.grade.equals("C+")){
gradeInt = 2.5;
}
else if (this.grade.equals("C")){
gradeInt = 2.0;
}
else if (this.grade.equals("D+")){
gradeInt = 1.5;
}
else if (this.grade.equals("D")){
gradeInt = 1.0;
}
else if (this.grade.equals("F")){
gradeInt = 0.0;
}
return gradeInt;
}
}
'Programming language > Java' 카테고리의 다른 글
Java - 9 [상속, super] (1) | 2020.10.18 |
---|---|
Java - 실무5 [MP3플레이어] (1) | 2020.10.18 |
Java - 실무3 [영화관] (2) | 2020.10.18 |
Java - 실무2 [포켓몬 도감] (2) | 2020.10.18 |
Java - 실무1 [은행] (2) | 2020.10.18 |