diff --git a/src/main/java/gpacalc/Application.java b/src/main/java/gpacalc/Application.java index 57e79e1..39e0536 100644 --- a/src/main/java/gpacalc/Application.java +++ b/src/main/java/gpacalc/Application.java @@ -1,7 +1,62 @@ package gpacalc; +import static camp.nextstep.edu.missionutils.Console.readLine; + +//import gpacalc.Subject; ... + +import java.util.ArrayList; + public class Application { public static void main(String[] args) { //TODO: 구현 + + String input_M; + String input_G; + ArrayList subjects_M = new ArrayList<>(); + ArrayList subjects_G = new ArrayList<>(); + Operator op = new Operator(); + + System.out.println("전공 과목명과 이수학점, 평점을 입력해주세요(예시: 프로그래밍언어론-3-A+,소프트웨어공학-3-B+):"); + input_M = readLine(); + + String[] input_Ms = input_M.split(","); + + for (String inputM : input_Ms) { + String[] info = inputM.split("-"); + Subject sub = new Subject(info[0], info[1], info[2]); + subjects_M.add(sub); + } + + System.out.println("교양 과목명과 이수학점, 평점을 입력해주세요(예시: 선형대수학-3-C0,인간관계와자기성장-3-P):"); + input_G = readLine(); + String[] input_Gs = input_G.split(","); + for (String inputG : input_Gs) { + String[] info = inputG.split("-"); + Subject sub = new Subject(info[0], info[1], info[2]); + subjects_G.add(sub); + } + + op.checkGradeError(subjects_M, subjects_G); + op.checkCreditError(subjects_M, subjects_G); + + + + System.out.println("<과목 목록>"); + op.listOfSubjects(subjects_M, subjects_G); + + + System.out.println("\n<취득학점>"); + System.out.print(op.getCredit(subjects_M, subjects_G)); + System.out.println("학점"); + + System.out.println("\n<평점평균>"); + System.out.print(Math.round(op.averageAllScore(subjects_M, subjects_G) * 100) / 100.0); + System.out.println(" / 4.5"); + + System.out.println("\n<전공 평점평균>"); + System.out.print(op.averageMajorScore(subjects_M, subjects_G)); + System.out.println(" / 4.5"); + + } } diff --git a/src/main/java/gpacalc/Operator.java b/src/main/java/gpacalc/Operator.java new file mode 100644 index 0000000..33f1064 --- /dev/null +++ b/src/main/java/gpacalc/Operator.java @@ -0,0 +1,199 @@ +package gpacalc; + +import java.util.ArrayList; + +public class Operator { + + public int getCredit_except_F_NP(ArrayList subjects_M, ArrayList subjects_G){ + int credit = 0; + for(int i = 0; i subjects_M, ArrayList subjects_G){ + int credit = 0; + for(int i = 0; i subjects_M, ArrayList subjects_G) { + float allAverage = 0; + float sgwAverage = 0.F; + for (int i = 0; i < subjects_M.size(); i++) { + if (!(subjects_M.get(i).getGrade().equals("P")) && !(subjects_M.get(i).getGrade().equals("NP"))) { + if (subjects_M.get(i).getGrade().equals("A+")) { + sgwAverage += 4.5F * Integer.parseInt(subjects_M.get(i).getCredit()); + } else if (subjects_M.get(i).getGrade().equals("A0")) { + sgwAverage += 4.0F * Integer.parseInt(subjects_M.get(i).getCredit()); + } else if (subjects_M.get(i).getGrade().equals("B+")) { + sgwAverage += 3.5F * Integer.parseInt(subjects_M.get(i).getCredit()); + } else if (subjects_M.get(i).getGrade().equals("B0")) { + sgwAverage += 3.0F * Integer.parseInt(subjects_M.get(i).getCredit()); + } else if (subjects_M.get(i).getGrade().equals("C+")) { + sgwAverage += 2.5F * Integer.parseInt(subjects_M.get(i).getCredit()); + } else if (subjects_M.get(i).getGrade().equals("C0")) { + sgwAverage += 2.0F * Integer.parseInt(subjects_M.get(i).getCredit()); + } else if (subjects_M.get(i).getGrade().equals("D+")) { + sgwAverage += 1.5F * Integer.parseInt(subjects_M.get(i).getCredit()); + } else if (subjects_M.get(i).getGrade().equals("D0")) { + sgwAverage += 1.0F * Integer.parseInt(subjects_M.get(i).getCredit()); + } else if (subjects_M.get(i).getGrade().equals("F")) { + sgwAverage += 0.F * Integer.parseInt(subjects_M.get(i).getCredit()); + } + } + } + + + for (int i = 0; i < subjects_G.size(); i++) { + if (!(subjects_G.get(i).getGrade().equals("P")) && !(subjects_G.get(i).getGrade().equals("NP"))) { + if (subjects_G.get(i).getGrade().equals("A+")) { + sgwAverage += 4.5F * Integer.parseInt(subjects_G.get(i).getCredit()); + } else if (subjects_G.get(i).getGrade().equals("A0")) { + sgwAverage += 4.0F * Integer.parseInt(subjects_G.get(i).getCredit()); + } else if (subjects_G.get(i).getGrade().equals("B+")) { + sgwAverage += 3.5F * Integer.parseInt(subjects_G.get(i).getCredit()); + } else if (subjects_G.get(i).getGrade().equals("B0")) { + sgwAverage += 3.0F * Integer.parseInt(subjects_G.get(i).getCredit()); + } else if (subjects_G.get(i).getGrade().equals("C+")) { + sgwAverage += 2.5F * Integer.parseInt(subjects_G.get(i).getCredit()); + } else if (subjects_G.get(i).getGrade().equals("C0")) { + sgwAverage += 2.0F * Integer.parseInt(subjects_G.get(i).getCredit()); + } else if (subjects_G.get(i).getGrade().equals("D+")) { + sgwAverage += 1.5F * Integer.parseInt(subjects_G.get(i).getCredit()); + } else if (subjects_G.get(i).getGrade().equals("D0")) { + sgwAverage += 1.0F * Integer.parseInt(subjects_G.get(i).getCredit()); + } else if (subjects_G.get(i).getGrade().equals("F")) { + sgwAverage += 0.F * Integer.parseInt(subjects_G.get(i).getCredit()); + } + } + + allAverage = sgwAverage / getCredit_except_F_NP(subjects_M, subjects_G); + } + return allAverage; + } + + public float averageMajorScore(ArrayList subjects_M, ArrayList subjects_G) { + float majorAverage = 0; + float sgwAverage = 0.F; + int majorCredit = 0; + for (int i = 0; i < subjects_M.size(); i++) { + if (!(subjects_M.get(i).getGrade().equals("F")) && !(subjects_M.get(i).getGrade().equals("NP"))) { + if (subjects_M.get(i).getGrade().equals("A+")) { + sgwAverage += 4.5F * Integer.parseInt(subjects_M.get(i).getCredit()); + } else if (subjects_M.get(i).getGrade().equals("A0")) { + sgwAverage += 4.0F * Integer.parseInt(subjects_M.get(i).getCredit()); + } else if (subjects_M.get(i).getGrade().equals("B+")) { + sgwAverage += 3.5F * Integer.parseInt(subjects_M.get(i).getCredit()); + } else if (subjects_M.get(i).getGrade().equals("B0")) { + sgwAverage += 3.0F * Integer.parseInt(subjects_M.get(i).getCredit()); + } else if (subjects_M.get(i).getGrade().equals("C+")) { + sgwAverage += 2.5F * Integer.parseInt(subjects_M.get(i).getCredit()); + } else if (subjects_M.get(i).getGrade().equals("C0")) { + sgwAverage += 2.0F * Integer.parseInt(subjects_M.get(i).getCredit()); + } else if (subjects_M.get(i).getGrade().equals("D+")) { + sgwAverage += 1.5F * Integer.parseInt(subjects_M.get(i).getCredit()); + } else if (subjects_M.get(i).getGrade().equals("D0")) { + sgwAverage += 1.0F * Integer.parseInt(subjects_M.get(i).getCredit()); + } + } + + } + for(int j = 0; j < subjects_M.size(); j++){ + majorCredit += Integer.parseInt(subjects_M.get(j).getCredit()); + } + + majorAverage = sgwAverage / majorCredit; + + return majorAverage; + } + + public void listOfSubjects(ArrayList subjects_M, ArrayList subjects_G) { + for (int i = 0; i < subjects_M.size(); i++) { + System.out.print("[전공] "); + System.out.print(subjects_M.get(i).getName()); + System.out.print(","); + System.out.print(subjects_M.get(i).getCredit()); + System.out.print(","); + System.out.println(subjects_M.get(i).getGrade()); + } + for (int i = 0; i < subjects_G.size(); i++) { + System.out.print("[교양] "); + System.out.print(subjects_G.get(i).getName()); + System.out.print(","); + System.out.print(subjects_G.get(i).getCredit()); + System.out.print(","); + System.out.println(subjects_G.get(i).getGrade()); + } + + } + +// public void Check(ArrayList subjects_M, ArrayList subjects_G){ +// try { +// checkError(subjects_M,subjects_G); +// } catch (IllegalAccessException e) { +// throw e; +// } +// } + + public void checkCreditError(ArrayList subjects_M, ArrayList subjects_G) { + for(int i = 0; i < subjects_M.size(); i++){ + if(subjects_M.get(i).getName().length() > 10){ + throw new IllegalArgumentException(); + } + } + + for(int i = 0; i < subjects_G.size(); i++){ + if(subjects_G.get(i).getName().length() > 10){ + throw new IllegalArgumentException(); + } + } + + + for(int i = 0; i < subjects_M.size(); i++){ + if(Integer.parseInt(subjects_M.get(i).getCredit()) < 1 || Integer.parseInt(subjects_M.get(i).getCredit()) > 4 ){ + throw new IllegalArgumentException(); + } + } + + for(int i = 0; i < subjects_G.size(); i++){ + if(Integer.parseInt(subjects_G.get(i).getCredit()) < 1 || Integer.parseInt(subjects_G.get(i).getCredit()) > 4 ){ + throw new IllegalArgumentException(); + } + } + } + + public void checkGradeError(ArrayList subjects_M, ArrayList subjects_G) { + for(int i = 0; i < subjects_M.size(); i++){ + if(subjects_M.get(i).getGrade().equals("A+") || subjects_M.get(i).getGrade().equals("A0") || subjects_M.get(i).getGrade().equals("B+") || subjects_M.get(i).getGrade().equals("B0") + || subjects_M.get(i).getGrade().equals("C+") || subjects_M.get(i).getGrade().equals("C0") || subjects_M.get(i).getGrade().equals("D+") || subjects_M.get(i).getGrade().equals("D0") + || subjects_M.get(i).getGrade().equals("F") || subjects_M.get(i).getGrade().equals("NP") || subjects_M.get(i).getGrade().equals("P")){ + + }else { + throw new IllegalArgumentException(); + } + } + } +} diff --git a/src/main/java/gpacalc/Subject.java b/src/main/java/gpacalc/Subject.java new file mode 100644 index 0000000..1c4ca2c --- /dev/null +++ b/src/main/java/gpacalc/Subject.java @@ -0,0 +1,42 @@ +package gpacalc; + +public class Subject { + private String Name; + private String Credit; + private String Grade; + + public Subject(String Name, String Credit, String Grade) { + this.Name = Name; + this.Credit = Credit; + this.Grade = Grade; + } + + + public String getName() { + return Name; + } + + public void setName(String name) { + Name = name; + } + + public String getCredit() { + return Credit; + } + + public void setCredit(String credit) { + Credit = credit; + } + + public String getGrade() { + return Grade; + } + + public void setGrade(String grade) { + this.Grade = grade; + } +} + + + +