From c345aa65a2ff2580a144f2147ac7e759095415f3 Mon Sep 17 00:00:00 2001 From: LukeSeobyungju <22100356@handong.ac.kr> Date: Thu, 26 Dec 2024 14:52:45 +0900 Subject: [PATCH 1/2] done --- build.gradle | 3 + gradle/wrapper/gradle-wrapper.properties | 2 +- src/main/java/gpacalc/Application.java | 101 ++++++++++++++++++++++- src/main/java/gpacalc/Subject.java | 53 ++++++++++++ 4 files changed, 157 insertions(+), 2 deletions(-) create mode 100644 src/main/java/gpacalc/Subject.java diff --git a/build.gradle b/build.gradle index 067a019..c72819b 100644 --- a/build.gradle +++ b/build.gradle @@ -15,4 +15,7 @@ dependencies { test { useJUnitPlatform() +} +tasks.withType(JavaCompile){ + options.encoding = "UTF-8" } \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 3ef7dbe..ce217e4 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Sat Dec 30 05:45:58 KST 2023 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.10-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/src/main/java/gpacalc/Application.java b/src/main/java/gpacalc/Application.java index 57e79e1..9beccd9 100644 --- a/src/main/java/gpacalc/Application.java +++ b/src/main/java/gpacalc/Application.java @@ -1,7 +1,106 @@ package gpacalc; +import java.util.ArrayList; +import camp.nextstep.edu.missionutils.Console; + public class Application { public static void main(String[] args) { - //TODO: 구현 + ArrayList> general=new ArrayList<>(); + general.add(new ArrayList<>()); + general.add(new ArrayList<>()); + String[] line=new String[2]; + String[][] parts=new String[2][]; + boolean flag=true; +// try{ + System.out.println("전공 과목명과 이수학점, 평점을 입력해주세요(예시: 프로그래밍언어론-3-A+,소프트웨어공학-3-B+):"); + line[0]=Console.readLine(); + parts[0]=line[0].split(","); + System.out.println("교양 과목명과 이수학점, 평점을 입력해주세요(예시: 선형대수학-3-C0,인간관계와자기성장-3-P):"); + line[1]=Console.readLine(); + parts[1]=line[1].split(","); + for(String part:parts[0]) { + String[] subject = part.split("-"); + if (!subject[1].equals("1") && !subject[1].equals("2") && !subject[1].equals("3") && !subject[1].equals("4")) { + flag=false; + throw new IllegalArgumentException(); + } + if (subject[0].length() > 10 || subject[0].replaceAll(" ", "").isEmpty()) { + flag=false; + throw new IllegalArgumentException(); + } + if (!subject[2].equals("A+") && !subject[2].equals("A0") && !subject[2].equals("B+") && !subject[2].equals("B0") && !subject[2].equals("C+") && !subject[2].equals("C0") && !subject[2].equals("D+") && !subject[2].equals("D0") && !subject[2].equals("F") && !subject[2].equals("P") && !subject[2].equals("NP")) { + flag=false; + throw new IllegalArgumentException(); + } + } + for(String part:parts[1]) { + String[] subject = part.split("-"); + if (!subject[1].equals("1") && !subject[1].equals("2") && !subject[1].equals("3") && !subject[1].equals("4")) { + flag=false; + throw new IllegalArgumentException(); + } + if (subject[0].length() > 10 || subject[0].replaceAll(" ", "").isEmpty()) { + flag=false; + throw new IllegalArgumentException(); + } + if (!subject[2].equals("A+") && !subject[2].equals("A0") && !subject[2].equals("B+") && !subject[2].equals("B0") && !subject[2].equals("C+") && !subject[2].equals("C0") && !subject[2].equals("D+") && !subject[2].equals("D0") && !subject[2].equals("F") && !subject[2].equals("P") && !subject[2].equals("NP")) { + flag=false; + throw new IllegalArgumentException(); + } + } +// }catch(IllegalArgumentException e){ +// //System.out.println(e.getMessage()); +// flag=false; +// } + if(flag){ + for(int i=0;i<2;i++){ + for(String part:parts[i]){ + String[] subject=part.split("-"); + Subject newSubject=new Subject(subject[0],Integer.parseInt(subject[1]),subject[2]); + general.get(i).add(newSubject); + } + } + double weightSum=0; + int count=0; + double sum2=0; + double count2=0; + int scoreSum=0; + System.out.println("<과목 목록>"); + for(Subject subject:general.get(0)){ + System.out.println("[전공] "+subject.getName()+","+subject.getPoint()+","+subject.getScore()); + weightSum+=subject.getScore2()*subject.getPoint(); + sum2+=subject.getScore2()*subject.getPoint(); + if(!subject.getScore().equals("P")&&!subject.getScore().equals("NP")) { + count += subject.getPoint(); + count2 += subject.getPoint(); + } + if(!subject.getScore().equals("F")&&!subject.getScore().equals("NP")) { + scoreSum += subject.getPoint(); + } + } + for(Subject subject:general.get(1)){ + System.out.println("[교양] "+subject.getName()+","+subject.getPoint()+","+subject.getScore()); + weightSum+=subject.getScore2()*subject.getPoint(); + if(!subject.getScore().equals("P")&&!subject.getScore().equals("NP")) { + count += subject.getPoint(); + } + if(!subject.getScore().equals("F")&&!subject.getScore().equals("NP")) { + scoreSum += subject.getPoint(); + } + } + double avg=weightSum/count; + double majorAvg=sum2/count2; + + System.out.println(); + System.out.println("<취득학점>"); + System.out.println(scoreSum+"학점"); + System.out.println(); + System.out.println("<평점평균>"); + System.out.printf("%.2f / 4.5\n",avg); + System.out.println(); + System.out.println("<전공 평점평균>"); + System.out.printf("%.2f / 4.5\n",majorAvg); + } } } + diff --git a/src/main/java/gpacalc/Subject.java b/src/main/java/gpacalc/Subject.java new file mode 100644 index 0000000..569537d --- /dev/null +++ b/src/main/java/gpacalc/Subject.java @@ -0,0 +1,53 @@ +package gpacalc; + +class Subject { + private String name; + private String score; + private int point; + + public Subject(String name, int point, String score) { + this.name = name; + this.score = score; + this.point = point; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getScore() { + return score; + } + + public void setScore(String score) { + this.score = score; + } + + public int getPoint() { + return point; + } + + public void setPoint(int point) { + this.point = point; + } + + public double getScore2() { + double s = switch (score) { + case "A+" -> 4.5; + case "A0" -> 4.0; + case "B+" -> 3.5; + case "B0" -> 3.0; + case "C+" -> 2.5; + case "C0" -> 2.0; + case "D+" -> 1.5; + case "D0" -> 1.0; + default -> 0; + }; + return s; + } + +} From 258169ff2a781c3f62bc529f0930603bdd622667 Mon Sep 17 00:00:00 2001 From: LukeSeobyungju <22100356@handong.ac.kr> Date: Thu, 26 Dec 2024 14:54:26 +0900 Subject: [PATCH 2/2] done --- src/main/java/gpacalc/Application.java | 73 ++++++++++++-------------- 1 file changed, 34 insertions(+), 39 deletions(-) diff --git a/src/main/java/gpacalc/Application.java b/src/main/java/gpacalc/Application.java index 9beccd9..88f41d6 100644 --- a/src/main/java/gpacalc/Application.java +++ b/src/main/java/gpacalc/Application.java @@ -11,47 +11,42 @@ public static void main(String[] args) { String[] line=new String[2]; String[][] parts=new String[2][]; boolean flag=true; -// try{ - System.out.println("전공 과목명과 이수학점, 평점을 입력해주세요(예시: 프로그래밍언어론-3-A+,소프트웨어공학-3-B+):"); - line[0]=Console.readLine(); - parts[0]=line[0].split(","); - System.out.println("교양 과목명과 이수학점, 평점을 입력해주세요(예시: 선형대수학-3-C0,인간관계와자기성장-3-P):"); - line[1]=Console.readLine(); - parts[1]=line[1].split(","); - for(String part:parts[0]) { - String[] subject = part.split("-"); - if (!subject[1].equals("1") && !subject[1].equals("2") && !subject[1].equals("3") && !subject[1].equals("4")) { - flag=false; - throw new IllegalArgumentException(); - } - if (subject[0].length() > 10 || subject[0].replaceAll(" ", "").isEmpty()) { - flag=false; - throw new IllegalArgumentException(); - } - if (!subject[2].equals("A+") && !subject[2].equals("A0") && !subject[2].equals("B+") && !subject[2].equals("B0") && !subject[2].equals("C+") && !subject[2].equals("C0") && !subject[2].equals("D+") && !subject[2].equals("D0") && !subject[2].equals("F") && !subject[2].equals("P") && !subject[2].equals("NP")) { - flag=false; - throw new IllegalArgumentException(); - } + System.out.println("전공 과목명과 이수학점, 평점을 입력해주세요(예시: 프로그래밍언어론-3-A+,소프트웨어공학-3-B+):"); + line[0]=Console.readLine(); + parts[0]=line[0].split(","); + System.out.println("교양 과목명과 이수학점, 평점을 입력해주세요(예시: 선형대수학-3-C0,인간관계와자기성장-3-P):"); + line[1]=Console.readLine(); + parts[1]=line[1].split(","); + for(String part:parts[0]) { + String[] subject = part.split("-"); + if (!subject[1].equals("1") && !subject[1].equals("2") && !subject[1].equals("3") && !subject[1].equals("4")) { + flag=false; + throw new IllegalArgumentException(); } - for(String part:parts[1]) { - String[] subject = part.split("-"); - if (!subject[1].equals("1") && !subject[1].equals("2") && !subject[1].equals("3") && !subject[1].equals("4")) { - flag=false; - throw new IllegalArgumentException(); - } - if (subject[0].length() > 10 || subject[0].replaceAll(" ", "").isEmpty()) { - flag=false; - throw new IllegalArgumentException(); - } - if (!subject[2].equals("A+") && !subject[2].equals("A0") && !subject[2].equals("B+") && !subject[2].equals("B0") && !subject[2].equals("C+") && !subject[2].equals("C0") && !subject[2].equals("D+") && !subject[2].equals("D0") && !subject[2].equals("F") && !subject[2].equals("P") && !subject[2].equals("NP")) { - flag=false; - throw new IllegalArgumentException(); - } + if (subject[0].length() > 10 || subject[0].replaceAll(" ", "").isEmpty()) { + flag=false; + throw new IllegalArgumentException(); } -// }catch(IllegalArgumentException e){ -// //System.out.println(e.getMessage()); -// flag=false; -// } + if (!subject[2].equals("A+") && !subject[2].equals("A0") && !subject[2].equals("B+") && !subject[2].equals("B0") && !subject[2].equals("C+") && !subject[2].equals("C0") && !subject[2].equals("D+") && !subject[2].equals("D0") && !subject[2].equals("F") && !subject[2].equals("P") && !subject[2].equals("NP")) { + flag=false; + throw new IllegalArgumentException(); + } + } + for(String part:parts[1]) { + String[] subject = part.split("-"); + if (!subject[1].equals("1") && !subject[1].equals("2") && !subject[1].equals("3") && !subject[1].equals("4")) { + flag=false; + throw new IllegalArgumentException(); + } + if (subject[0].length() > 10 || subject[0].replaceAll(" ", "").isEmpty()) { + flag=false; + throw new IllegalArgumentException(); + } + if (!subject[2].equals("A+") && !subject[2].equals("A0") && !subject[2].equals("B+") && !subject[2].equals("B0") && !subject[2].equals("C+") && !subject[2].equals("C0") && !subject[2].equals("D+") && !subject[2].equals("D0") && !subject[2].equals("F") && !subject[2].equals("P") && !subject[2].equals("NP")) { + flag=false; + throw new IllegalArgumentException(); + } + } if(flag){ for(int i=0;i<2;i++){ for(String part:parts[i]){