From deb60c540647c806e37a3f0784b028fb58c8bec7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=87=E1=85=A2=E1=86=A8=E1=84=8C=E1=85=A5=E1=86=BC?= =?UTF-8?q?=E1=84=80=E1=85=B3=E1=86=AB?= Date: Sat, 8 Jun 2024 23:45:58 +0900 Subject: [PATCH 1/7] =?UTF-8?q?docs=20common:=20Readme.md=EC=97=90=20?= =?UTF-8?q?=EA=B8=B0=EB=8A=A5=20=EB=AA=A9=EB=A1=9D=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 491aece1..27f82d29 100644 --- a/README.md +++ b/README.md @@ -1 +1,11 @@ -# java-racingcar-precourse \ No newline at end of file +# java-racingcar-precourse + +기능 목록 +1. 자동차 이름 입력 +2. 시도할 횟수 입력 +3. 횟수별로 자동차 이름 출력 +4. 0-9 사이 무작위 값 생성 +5. 무작위 값이 4이상인 경우, 전진 +6. 우승자 식별 +7. 우승자 출력 +8. 잘못된 입력시 exception 출력 \ No newline at end of file From a278ac0e66de17b2b66653c189b86ec25dd5048d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=87=E1=85=A2=E1=86=A8=E1=84=8C=E1=85=A5=E1=86=BC?= =?UTF-8?q?=E1=84=80=E1=85=B3=E1=86=AB?= Date: Sat, 8 Jun 2024 23:47:20 +0900 Subject: [PATCH 2/7] =?UTF-8?q?feat=20:=201.=20=EC=9E=90=EB=8F=99=EC=B0=A8?= =?UTF-8?q?=20=EC=9D=B4=EB=A6=84=20=EC=9E=85=EB=A0=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Racingcar_application.java | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 src/main/java/Racingcar_application.java diff --git a/src/main/java/Racingcar_application.java b/src/main/java/Racingcar_application.java new file mode 100644 index 00000000..8074a46f --- /dev/null +++ b/src/main/java/Racingcar_application.java @@ -0,0 +1,21 @@ +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.ArrayList; +import java.util.List; +import java.util.Scanner; +import java.util.StringTokenizer; + +public class Racingcar_application { + + public static void main(String[] args) throws IOException { + BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st = new StringTokenizer(bf.readLine(), ","); + List carList= new ArrayList<>(); + while(st.hasMoreElements()){ + carList.add(st.nextToken()); + } + carList.forEach(System.out::println); + } +} From 158ec0358786b41500c797677516954d4f2d5c87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=87=E1=85=A2=E1=86=A8=E1=84=8C=E1=85=A5=E1=86=BC?= =?UTF-8?q?=E1=84=80=E1=85=B3=E1=86=AB?= Date: Sun, 9 Jun 2024 00:30:23 +0900 Subject: [PATCH 3/7] =?UTF-8?q?feat=20:=202.=20=EC=8B=9C=EB=8F=84=ED=95=A0?= =?UTF-8?q?=20=ED=9A=9F=EC=88=98=20=EC=9E=85=EB=A0=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Racingcar_application.java | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/main/java/Racingcar_application.java b/src/main/java/Racingcar_application.java index 8074a46f..b83a3d42 100644 --- a/src/main/java/Racingcar_application.java +++ b/src/main/java/Racingcar_application.java @@ -2,20 +2,27 @@ import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; -import java.util.ArrayList; -import java.util.List; -import java.util.Scanner; -import java.util.StringTokenizer; +import java.util.*; public class Racingcar_application { public static void main(String[] args) throws IOException { + System.out.println("경주할 자동차 이름을 입력하세요.(이름은 쉼표(,) 기준으로 구분"); BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(bf.readLine(), ","); - List carList= new ArrayList<>(); + + System.out.println("시도할 횟수는 몇 회인가요?"); + Scanner sc = new Scanner(System.in); + int cnt = sc.nextInt(); + + Map raceMap = new LinkedHashMap<>(); while(st.hasMoreElements()){ - carList.add(st.nextToken()); + raceMap.put(st.nextToken(), ""); } - carList.forEach(System.out::println); + + for(String s : raceMap.keySet()){ + System.out.println(s + " : " + raceMap.get(s)); + } + } } From 8de7f8179f672b8c92a1ced61b2ffddb52d6023d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=87=E1=85=A2=E1=86=A8=E1=84=8C=E1=85=A5=E1=86=BC?= =?UTF-8?q?=E1=84=80=E1=85=B3=E1=86=AB?= Date: Sun, 9 Jun 2024 00:38:26 +0900 Subject: [PATCH 4/7] =?UTF-8?q?feat=20:=203.=20=ED=9A=9F=EC=88=98=EB=B3=84?= =?UTF-8?q?=EB=A1=9C=20=EC=9E=90=EB=8F=99=EC=B0=A8=20=EC=9D=B4=EB=A6=84=20?= =?UTF-8?q?=EC=B6=9C=EB=A0=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Racingcar_application.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/main/java/Racingcar_application.java b/src/main/java/Racingcar_application.java index b83a3d42..bfa09a4d 100644 --- a/src/main/java/Racingcar_application.java +++ b/src/main/java/Racingcar_application.java @@ -1,6 +1,5 @@ import java.io.BufferedReader; import java.io.IOException; -import java.io.InputStream; import java.io.InputStreamReader; import java.util.*; @@ -20,9 +19,17 @@ public static void main(String[] args) throws IOException { raceMap.put(st.nextToken(), ""); } + for(int i=0; i raceMap) { for(String s : raceMap.keySet()){ System.out.println(s + " : " + raceMap.get(s)); } - + System.out.println(""); } + } From c6ca6af5cb22c42e75956633942153aec5c190cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=87=E1=85=A2=E1=86=A8=E1=84=8C=E1=85=A5=E1=86=BC?= =?UTF-8?q?=E1=84=80=E1=85=B3=E1=86=AB?= Date: Sun, 9 Jun 2024 00:52:51 +0900 Subject: [PATCH 5/7] =?UTF-8?q?feat=20:=204.=200-9=20=EC=82=AC=EC=9D=B4=20?= =?UTF-8?q?=EB=AC=B4=EC=9E=91=EC=9C=84=20=EA=B0=92=20=EC=83=9D=EC=84=B1,?= =?UTF-8?q?=205.=20=EB=AC=B4=EC=9E=91=EC=9C=84=20=EA=B0=92=EC=9D=B4=204?= =?UTF-8?q?=EC=9D=B4=EC=83=81=EC=9D=B8=20=EA=B2=BD=EC=9A=B0,=20=EC=A0=84?= =?UTF-8?q?=EC=A7=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Racingcar_application.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/main/java/Racingcar_application.java b/src/main/java/Racingcar_application.java index bfa09a4d..2c155549 100644 --- a/src/main/java/Racingcar_application.java +++ b/src/main/java/Racingcar_application.java @@ -20,11 +20,24 @@ public static void main(String[] args) throws IOException { } for(int i=0; i startRacing(Map raceMap) { + Random random = new Random(); + int randNum = 0; + for(String s : raceMap.keySet()){ + randNum = random.nextInt(9); + if (randNum > 4) { + raceMap.put(s, raceMap.get(s) + "-"); + } + } + return raceMap; + } + private static void printRacing(Map raceMap) { for(String s : raceMap.keySet()){ System.out.println(s + " : " + raceMap.get(s)); @@ -32,4 +45,6 @@ private static void printRacing(Map raceMap) { System.out.println(""); } + + } From 1204f68e587047e312a18e7ae13be40e5a0b29a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=87=E1=85=A2=E1=86=A8=E1=84=8C=E1=85=A5=E1=86=BC?= =?UTF-8?q?=E1=84=80=E1=85=B3=E1=86=AB?= Date: Sun, 9 Jun 2024 01:54:22 +0900 Subject: [PATCH 6/7] =?UTF-8?q?feat=20:=206.=20=EC=9A=B0=EC=8A=B9=EC=9E=90?= =?UTF-8?q?=20=EC=8B=9D=EB=B3=84,=207.=20=EC=9A=B0=EC=8A=B9=EC=9E=90=20?= =?UTF-8?q?=EC=B6=9C=EB=A0=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Racingcar_application.java | 30 ++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/main/java/Racingcar_application.java b/src/main/java/Racingcar_application.java index 2c155549..e00bbe26 100644 --- a/src/main/java/Racingcar_application.java +++ b/src/main/java/Racingcar_application.java @@ -6,10 +6,12 @@ public class Racingcar_application { public static void main(String[] args) throws IOException { + // 1. 자동차 이름 입력 System.out.println("경주할 자동차 이름을 입력하세요.(이름은 쉼표(,) 기준으로 구분"); BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(bf.readLine(), ","); + // 2. 시도할 횟수 입력 System.out.println("시도할 횟수는 몇 회인가요?"); Scanner sc = new Scanner(System.in); int cnt = sc.nextInt(); @@ -20,10 +22,38 @@ public static void main(String[] args) throws IOException { } for(int i=0; i raceMap) { + int winRace = 0; + int raceCnt = 0; + String winner = ""; + + for(String s : raceMap.keySet()){ + raceCnt = raceMap.get(s).length(); + if(winRace <= raceCnt) winRace = raceCnt; + } + + for(String s : raceMap.keySet()){ + if (raceMap.get(s).length() == winRace){ + winner = winner + ", " + s; + } + } + if (winner.startsWith(", ")){ + winner = winner.replaceFirst(", ", ""); + } + return winner; } private static Map startRacing(Map raceMap) { From 0dbb68f495e35d445448caa4875d3a4da6f6d119 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=87=E1=85=A2=E1=86=A8=E1=84=8C=E1=85=A5=E1=86=BC?= =?UTF-8?q?=E1=84=80=E1=85=B3=E1=86=AB?= Date: Mon, 10 Jun 2024 00:12:02 +0900 Subject: [PATCH 7/7] =?UTF-8?q?feat=20:=208.=20=EC=9E=98=EB=AA=BB=EB=90=9C?= =?UTF-8?q?=20=EC=9E=85=EB=A0=A5=EC=8B=9C=20exception=20=EC=B6=9C=EB=A0=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Racingcar_application.java | 41 +++++++++++++++++++----- 1 file changed, 33 insertions(+), 8 deletions(-) diff --git a/src/main/java/Racingcar_application.java b/src/main/java/Racingcar_application.java index e00bbe26..b0f2cf3e 100644 --- a/src/main/java/Racingcar_application.java +++ b/src/main/java/Racingcar_application.java @@ -7,14 +7,10 @@ public class Racingcar_application { public static void main(String[] args) throws IOException { // 1. 자동차 이름 입력 - System.out.println("경주할 자동차 이름을 입력하세요.(이름은 쉼표(,) 기준으로 구분"); - BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); - StringTokenizer st = new StringTokenizer(bf.readLine(), ","); + StringTokenizer st = getCarName(); // 2. 시도할 횟수 입력 - System.out.println("시도할 횟수는 몇 회인가요?"); - Scanner sc = new Scanner(System.in); - int cnt = sc.nextInt(); + int cnt = getTryCnt(); Map raceMap = new LinkedHashMap<>(); while(st.hasMoreElements()){ @@ -35,6 +31,37 @@ public static void main(String[] args) throws IOException { System.out.println("최종 우승자 : " + winner); } + private static int getTryCnt() { + int cnt = 0; + try { + System.out.println("시도할 횟수는 몇 회인가요?"); + Scanner sc = new Scanner(System.in); + cnt = sc.nextInt(); + }catch(Exception ex){ + System.out.println("[ERROR] "+ ex.toString() + " : 입력이 잘못되었습니다."); + getTryCnt(); + } + + return cnt; + } + + private static StringTokenizer getCarName() throws IOException { + BufferedReader bf = null; + StringTokenizer st = null; + try { + System.out.println("경주할 자동차 이름을 입력하세요.(이름은 쉼표(,) 기준으로 구분"); + bf = new BufferedReader(new InputStreamReader(System.in)); + st = new StringTokenizer(bf.readLine(), ","); + }catch(IllegalArgumentException ex){ + System.out.println("[ERROR] "+ ex.toString() + " : 입력이 잘못되었습니다."); + getCarName(); + }catch(Exception ex){ + System.out.println("[ERROR] "+ ex.toString() + " : 입력이 잘못되었습니다."); + getCarName(); + } + return st; + } + private static String getWinner(Map raceMap) { int winRace = 0; int raceCnt = 0; @@ -75,6 +102,4 @@ private static void printRacing(Map raceMap) { System.out.println(""); } - - }