From 079e54f7dc719facaa7704fce7b14f2fbbc85a43 Mon Sep 17 00:00:00 2001 From: code6150 Date: Mon, 30 Mar 2026 20:39:04 +0900 Subject: [PATCH 01/17] Project Done --- src/main/java/racingcar/Application.java | 79 +++++++++++++++++++++++- 1 file changed, 78 insertions(+), 1 deletion(-) diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index a17a52e..c42c29b 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -1,7 +1,84 @@ package racingcar; +import camp.nextstep.edu.missionutils.Randoms; +import java.util.*; + +class Car { + String name; + int moveCount; + + public Car(String name) { + this.name = name; + this.moveCount = 0; + } + + public void move() { + moveCount++; + } + + public int getMoveCount() { + return moveCount; + } +} + public class Application { public static void main(String[] args) { - // TODO: 프로그램 구현 + Scanner in = new Scanner(System.in); + + //부릉부릉 + System.out.println("경주할 자동차 이름을 입력하세요.(이름은 쉼표(,) 기준으로 구분)"); + String a = in.nextLine(); + List cars = new ArrayList<>(); + for (String name : a.split(",")) { + if (name.isEmpty()) {throw new IllegalArgumentException("왜안적음");} + if (name.length() > 5) {throw new IllegalArgumentException("이름5자초과됨");} + if (name.contains(" ")) {throw new IllegalArgumentException("공백포함됨");} + cars.add(new Car(name)); + } + Set dupCheck = new HashSet<>(); + for (Car c : cars){dupCheck.add(c.name);} + + if (dupCheck.size() != cars.size()) {throw new IllegalArgumentException("중복이름있음");} + + //끼이익쾅 + System.out.println("시도할 회수는 몇회인가요?"); + int n; + try { + n = in.nextInt(); + if (n <= 0) { + throw new IllegalArgumentException("0번이하"); + } + } catch (Exception e) { + throw new IllegalArgumentException("숫자안적음"); + } + + + + System.out.printf("%n실행 결과%n"); + for (int i=n;i>0;i--) { + for (Car car : cars) { + int ran = Randoms.pickNumberInRange(0,9); + if (ran >= 4) {car.move();} + String howMove = "-".repeat(car.getMoveCount()); + System.out.printf("%s : %s%n", car.name,howMove); + } + System.out.println(" "); //한칸 띄기용 + } + + //띠리리리리리링 + int max = 0; + List winners = new ArrayList<>(); + for (Car car : cars) { + if (car.getMoveCount() > max){ + max = car.getMoveCount(); + winners.clear(); + winners.add(car.name); + } else if (car.getMoveCount() == max) { + winners.add(car.name); + } + } + + //조아요 조아요 + System.out.println("최종 우승자 : " + String.join(", ", winners)); } } From c432503bfa74cca3deaeaa11432ed85f9f541bed Mon Sep 17 00:00:00 2001 From: code6150 Date: Mon, 30 Mar 2026 21:31:56 +0900 Subject: [PATCH 02/17] Project Done --- Java_Racingcar_2026-1 | 1 + 1 file changed, 1 insertion(+) create mode 160000 Java_Racingcar_2026-1 diff --git a/Java_Racingcar_2026-1 b/Java_Racingcar_2026-1 new file mode 160000 index 0000000..079e54f --- /dev/null +++ b/Java_Racingcar_2026-1 @@ -0,0 +1 @@ +Subproject commit 079e54f7dc719facaa7704fce7b14f2fbbc85a43 From d00b252df6231e0245050954686e9dfc58474c39 Mon Sep 17 00:00:00 2001 From: code6150 Date: Mon, 6 Apr 2026 00:47:08 +0900 Subject: [PATCH 03/17] =?UTF-8?q?refactor:=20Input=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/Application.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index c42c29b..950c244 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -52,8 +52,6 @@ public static void main(String[] args) { throw new IllegalArgumentException("숫자안적음"); } - - System.out.printf("%n실행 결과%n"); for (int i=n;i>0;i--) { for (Car car : cars) { From f62ec329cd2b0074556ccd13581b0879eab21fbd Mon Sep 17 00:00:00 2001 From: code6150 Date: Mon, 6 Apr 2026 14:41:58 +0900 Subject: [PATCH 04/17] =?UTF-8?q?refactor:=20Car=ED=81=B4=EB=9E=98?= =?UTF-8?q?=EC=8A=A4=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/Application.java | 18 ------------------ src/main/java/racingcar/Car.java | 19 +++++++++++++++++++ 2 files changed, 19 insertions(+), 18 deletions(-) create mode 100644 src/main/java/racingcar/Car.java diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index 950c244..9d770c1 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -3,24 +3,6 @@ import camp.nextstep.edu.missionutils.Randoms; import java.util.*; -class Car { - String name; - int moveCount; - - public Car(String name) { - this.name = name; - this.moveCount = 0; - } - - public void move() { - moveCount++; - } - - public int getMoveCount() { - return moveCount; - } -} - public class Application { public static void main(String[] args) { Scanner in = new Scanner(System.in); diff --git a/src/main/java/racingcar/Car.java b/src/main/java/racingcar/Car.java new file mode 100644 index 0000000..8faebbc --- /dev/null +++ b/src/main/java/racingcar/Car.java @@ -0,0 +1,19 @@ +package racingcar; + +public class Car { + String name; + int moveCount; + + public Car(String name) { + this.name = name; + this.moveCount = 0; + } + + public void move() { + moveCount++; + } + + public int getMoveCount() { + return moveCount; + } +} \ No newline at end of file From 87b6a216950c8f5cc778b8da7f2cf20d2689bb7a Mon Sep 17 00:00:00 2001 From: code6150 Date: Mon, 6 Apr 2026 15:30:24 +0900 Subject: [PATCH 05/17] =?UTF-8?q?refactor:=20ExceptionManager=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/ExceptionManager.java | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 src/main/java/racingcar/ExceptionManager.java diff --git a/src/main/java/racingcar/ExceptionManager.java b/src/main/java/racingcar/ExceptionManager.java new file mode 100644 index 0000000..d84bf8a --- /dev/null +++ b/src/main/java/racingcar/ExceptionManager.java @@ -0,0 +1,4 @@ +package racingcar; + +public class ExceptionManager { +} From b0335848128f10ba5800603334367b21f43a2eed Mon Sep 17 00:00:00 2001 From: code6150 Date: Mon, 6 Apr 2026 15:35:35 +0900 Subject: [PATCH 06/17] =?UTF-8?q?refactor:=20=EC=B0=A8=20=EC=9D=B4?= =?UTF-8?q?=EB=A6=84=20=EC=98=88=EC=99=B8=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/Application.java | 4 +--- src/main/java/racingcar/ExceptionManager.java | 6 ++++++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index 9d770c1..12b2417 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -12,9 +12,7 @@ public static void main(String[] args) { String a = in.nextLine(); List cars = new ArrayList<>(); for (String name : a.split(",")) { - if (name.isEmpty()) {throw new IllegalArgumentException("왜안적음");} - if (name.length() > 5) {throw new IllegalArgumentException("이름5자초과됨");} - if (name.contains(" ")) {throw new IllegalArgumentException("공백포함됨");} + cars.add(new Car(name)); } Set dupCheck = new HashSet<>(); diff --git a/src/main/java/racingcar/ExceptionManager.java b/src/main/java/racingcar/ExceptionManager.java index d84bf8a..e3afbbf 100644 --- a/src/main/java/racingcar/ExceptionManager.java +++ b/src/main/java/racingcar/ExceptionManager.java @@ -1,4 +1,10 @@ package racingcar; public class ExceptionManager { + public void CarNameExcept(String name) { + if (name.isEmpty()) {throw new IllegalArgumentException("왜안적음");} + if (name.length() > 5) {throw new IllegalArgumentException("이름5자초과됨");} + if (name.contains(" ")) {throw new IllegalArgumentException("공백포함됨");} + } + } From 31f1ff5060c2fb863d52dc86627112e60dba8b06 Mon Sep 17 00:00:00 2001 From: code6150 Date: Mon, 6 Apr 2026 15:38:34 +0900 Subject: [PATCH 07/17] =?UTF-8?q?refactor:=20=EC=B0=A8=20=EC=9B=80?= =?UTF-8?q?=EC=A7=81=EC=9D=B4=EB=8A=94=20=EC=A1=B0=EA=B1=B4=20final=20?= =?UTF-8?q?=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/Application.java | 3 ++- src/main/java/racingcar/ExceptionManager.java | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index 12b2417..1325ef9 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -36,7 +36,8 @@ public static void main(String[] args) { for (int i=n;i>0;i--) { for (Car car : cars) { int ran = Randoms.pickNumberInRange(0,9); - if (ran >= 4) {car.move();} + final int movingNumber = 4; + if (ran >= movingNumber) {car.move();} String howMove = "-".repeat(car.getMoveCount()); System.out.printf("%s : %s%n", car.name,howMove); } diff --git a/src/main/java/racingcar/ExceptionManager.java b/src/main/java/racingcar/ExceptionManager.java index e3afbbf..2ce7e1a 100644 --- a/src/main/java/racingcar/ExceptionManager.java +++ b/src/main/java/racingcar/ExceptionManager.java @@ -6,5 +6,7 @@ public void CarNameExcept(String name) { if (name.length() > 5) {throw new IllegalArgumentException("이름5자초과됨");} if (name.contains(" ")) {throw new IllegalArgumentException("공백포함됨");} } + public void NumberInputExcept(int i) { + } } From 6835cf9377ad6997d18e4148b4f6a3e9a19a95ef Mon Sep 17 00:00:00 2001 From: code6150 Date: Mon, 6 Apr 2026 20:47:42 +0900 Subject: [PATCH 08/17] =?UTF-8?q?refactor:=20=EC=8A=B9=EB=A6=AC=EC=9E=90?= =?UTF-8?q?=20=EB=A1=9C=EC=A7=81=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/Application.java | 16 ------------ .../{ => Input}/ExceptionManager.java | 2 +- src/main/java/racingcar/Winner.java | 25 +++++++++++++++++++ 3 files changed, 26 insertions(+), 17 deletions(-) rename src/main/java/racingcar/{ => Input}/ExceptionManager.java (94%) create mode 100644 src/main/java/racingcar/Winner.java diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index 1325ef9..001c01b 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -7,7 +7,6 @@ public class Application { public static void main(String[] args) { Scanner in = new Scanner(System.in); - //부릉부릉 System.out.println("경주할 자동차 이름을 입력하세요.(이름은 쉼표(,) 기준으로 구분)"); String a = in.nextLine(); List cars = new ArrayList<>(); @@ -20,7 +19,6 @@ public static void main(String[] args) { if (dupCheck.size() != cars.size()) {throw new IllegalArgumentException("중복이름있음");} - //끼이익쾅 System.out.println("시도할 회수는 몇회인가요?"); int n; try { @@ -44,20 +42,6 @@ public static void main(String[] args) { System.out.println(" "); //한칸 띄기용 } - //띠리리리리리링 - int max = 0; - List winners = new ArrayList<>(); - for (Car car : cars) { - if (car.getMoveCount() > max){ - max = car.getMoveCount(); - winners.clear(); - winners.add(car.name); - } else if (car.getMoveCount() == max) { - winners.add(car.name); - } - } - - //조아요 조아요 System.out.println("최종 우승자 : " + String.join(", ", winners)); } } diff --git a/src/main/java/racingcar/ExceptionManager.java b/src/main/java/racingcar/Input/ExceptionManager.java similarity index 94% rename from src/main/java/racingcar/ExceptionManager.java rename to src/main/java/racingcar/Input/ExceptionManager.java index 2ce7e1a..21f2e84 100644 --- a/src/main/java/racingcar/ExceptionManager.java +++ b/src/main/java/racingcar/Input/ExceptionManager.java @@ -1,4 +1,4 @@ -package racingcar; +package racingcar.Input; public class ExceptionManager { public void CarNameExcept(String name) { diff --git a/src/main/java/racingcar/Winner.java b/src/main/java/racingcar/Winner.java new file mode 100644 index 0000000..2f9a1e9 --- /dev/null +++ b/src/main/java/racingcar/Winner.java @@ -0,0 +1,25 @@ +package racingcar; +import java.util.*; + +public class Winner { + List cars; + + public Winner(List cars) { + this.cars = cars; + } + + public List ChooseWinner() { + int max = 0; + List winners = new ArrayList<>(); + for (Car car : cars) { + if (car.getMoveCount() > max) { + max = car.getMoveCount(); + winners.clear(); + winners.add(car.name); + } else if (car.getMoveCount() == max) { + winners.add(car.name); + } + } + return winners; + } +} \ No newline at end of file From 001976d9ab3a8abf744b6f968e8563f9a2cb3e80 Mon Sep 17 00:00:00 2001 From: code6150 Date: Mon, 6 Apr 2026 20:51:33 +0900 Subject: [PATCH 09/17] =?UTF-8?q?refactor:=20Car.name=20=EC=BA=A1=EC=8A=90?= =?UTF-8?q?=ED=99=94=20=EB=B0=8F=20=EA=B8=B0=EC=A1=B4=20=EC=BD=94=EB=93=9C?= =?UTF-8?q?=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/Application.java | 4 ++-- src/main/java/racingcar/Car.java | 8 ++++++-- src/main/java/racingcar/Winner.java | 4 ++-- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index 001c01b..39fdd48 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -15,7 +15,7 @@ public static void main(String[] args) { cars.add(new Car(name)); } Set dupCheck = new HashSet<>(); - for (Car c : cars){dupCheck.add(c.name);} + for (Car c : cars){dupCheck.add(c.getName());} if (dupCheck.size() != cars.size()) {throw new IllegalArgumentException("중복이름있음");} @@ -37,7 +37,7 @@ public static void main(String[] args) { final int movingNumber = 4; if (ran >= movingNumber) {car.move();} String howMove = "-".repeat(car.getMoveCount()); - System.out.printf("%s : %s%n", car.name,howMove); + System.out.printf("%s : %s%n", car.getName(),howMove); } System.out.println(" "); //한칸 띄기용 } diff --git a/src/main/java/racingcar/Car.java b/src/main/java/racingcar/Car.java index 8faebbc..70ab0b5 100644 --- a/src/main/java/racingcar/Car.java +++ b/src/main/java/racingcar/Car.java @@ -1,8 +1,8 @@ package racingcar; public class Car { - String name; - int moveCount; + private final String name; + private int moveCount; public Car(String name) { this.name = name; @@ -13,6 +13,10 @@ public void move() { moveCount++; } + + public String getName() { + return name; + } public int getMoveCount() { return moveCount; } diff --git a/src/main/java/racingcar/Winner.java b/src/main/java/racingcar/Winner.java index 2f9a1e9..848fab0 100644 --- a/src/main/java/racingcar/Winner.java +++ b/src/main/java/racingcar/Winner.java @@ -15,9 +15,9 @@ public List ChooseWinner() { if (car.getMoveCount() > max) { max = car.getMoveCount(); winners.clear(); - winners.add(car.name); + winners.add(car.getName()); } else if (car.getMoveCount() == max) { - winners.add(car.name); + winners.add(car.getName()); } } return winners; From ec92a60bc4decd9762ded995674fd955a3db5f70 Mon Sep 17 00:00:00 2001 From: code6150 Date: Mon, 6 Apr 2026 20:54:58 +0900 Subject: [PATCH 10/17] =?UTF-8?q?refactor:=20=EC=8A=B9=EB=A6=AC=EC=9E=90?= =?UTF-8?q?=20=EC=B0=BE=EA=B8=B0=20=EB=A1=9C=EC=A7=81=20=EB=A7=88=EB=AC=B4?= =?UTF-8?q?=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/Application.java | 5 ++--- src/main/java/racingcar/Winner.java | 3 +-- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index 39fdd48..b8c4145 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -11,7 +11,6 @@ public static void main(String[] args) { String a = in.nextLine(); List cars = new ArrayList<>(); for (String name : a.split(",")) { - cars.add(new Car(name)); } Set dupCheck = new HashSet<>(); @@ -41,7 +40,7 @@ public static void main(String[] args) { } System.out.println(" "); //한칸 띄기용 } - - System.out.println("최종 우승자 : " + String.join(", ", winners)); + Winner w = new Winner(cars); + System.out.println("최종 우승자 : " + String.join(", ", w.findWinner())); } } diff --git a/src/main/java/racingcar/Winner.java b/src/main/java/racingcar/Winner.java index 848fab0..10b91eb 100644 --- a/src/main/java/racingcar/Winner.java +++ b/src/main/java/racingcar/Winner.java @@ -7,8 +7,7 @@ public class Winner { public Winner(List cars) { this.cars = cars; } - - public List ChooseWinner() { + public List findWinner() { int max = 0; List winners = new ArrayList<>(); for (Car car : cars) { From 0a00c168f8e7775f4d0c042cfe83cc7aeebcc698 Mon Sep 17 00:00:00 2001 From: code6150 Date: Mon, 6 Apr 2026 20:58:22 +0900 Subject: [PATCH 11/17] =?UTF-8?q?refactor:=20=EC=98=A4=EB=A5=98=EC=B2=98?= =?UTF-8?q?=EB=A6=AC=20=EB=A1=9C=EC=A7=81=20=EB=A6=AC=EC=85=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/Application.java | 3 +++ src/main/java/racingcar/Input/ExceptionManager.java | 12 ------------ 2 files changed, 3 insertions(+), 12 deletions(-) delete mode 100644 src/main/java/racingcar/Input/ExceptionManager.java diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index b8c4145..37e07b2 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -11,6 +11,9 @@ public static void main(String[] args) { String a = in.nextLine(); List cars = new ArrayList<>(); for (String name : a.split(",")) { + if (name.isEmpty()) {throw new IllegalArgumentException("왜안적음");} + if (name.length() > 5) {throw new IllegalArgumentException("이름5자초과됨");} + if (name.contains(" ")) {throw new IllegalArgumentException("공백포함됨");} cars.add(new Car(name)); } Set dupCheck = new HashSet<>(); diff --git a/src/main/java/racingcar/Input/ExceptionManager.java b/src/main/java/racingcar/Input/ExceptionManager.java deleted file mode 100644 index 21f2e84..0000000 --- a/src/main/java/racingcar/Input/ExceptionManager.java +++ /dev/null @@ -1,12 +0,0 @@ -package racingcar.Input; - -public class ExceptionManager { - public void CarNameExcept(String name) { - if (name.isEmpty()) {throw new IllegalArgumentException("왜안적음");} - if (name.length() > 5) {throw new IllegalArgumentException("이름5자초과됨");} - if (name.contains(" ")) {throw new IllegalArgumentException("공백포함됨");} - } - public void NumberInputExcept(int i) { - - } -} From 082789806fb05a8871d2ab11dd8fecf3566e6974 Mon Sep 17 00:00:00 2001 From: code6150 Date: Mon, 6 Apr 2026 21:01:30 +0900 Subject: [PATCH 12/17] =?UTF-8?q?refactor:=20Winner.cars=20=EC=BA=A1?= =?UTF-8?q?=EC=8A=90=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/Winner.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/racingcar/Winner.java b/src/main/java/racingcar/Winner.java index 10b91eb..41ee7b7 100644 --- a/src/main/java/racingcar/Winner.java +++ b/src/main/java/racingcar/Winner.java @@ -2,8 +2,7 @@ import java.util.*; public class Winner { - List cars; - + private final List cars; public Winner(List cars) { this.cars = cars; } From 361d468a89d3f8ff05d94f4d35dae2b1ee830af1 Mon Sep 17 00:00:00 2001 From: code6150 Date: Mon, 6 Apr 2026 21:05:43 +0900 Subject: [PATCH 13/17] =?UTF-8?q?refactor:=20=EA=B2=8C=EC=9E=84=EC=A7=84?= =?UTF-8?q?=ED=96=89=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/Application.java | 12 +--------- src/main/java/racingcar/Gaming.java | 28 ++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 11 deletions(-) create mode 100644 src/main/java/racingcar/Gaming.java diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index 37e07b2..e39ef5c 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -32,17 +32,7 @@ public static void main(String[] args) { throw new IllegalArgumentException("숫자안적음"); } - System.out.printf("%n실행 결과%n"); - for (int i=n;i>0;i--) { - for (Car car : cars) { - int ran = Randoms.pickNumberInRange(0,9); - final int movingNumber = 4; - if (ran >= movingNumber) {car.move();} - String howMove = "-".repeat(car.getMoveCount()); - System.out.printf("%s : %s%n", car.getName(),howMove); - } - System.out.println(" "); //한칸 띄기용 - } + Winner w = new Winner(cars); System.out.println("최종 우승자 : " + String.join(", ", w.findWinner())); } diff --git a/src/main/java/racingcar/Gaming.java b/src/main/java/racingcar/Gaming.java new file mode 100644 index 0000000..82c97a7 --- /dev/null +++ b/src/main/java/racingcar/Gaming.java @@ -0,0 +1,28 @@ +package racingcar; + +import camp.nextstep.edu.missionutils.Randoms; + +import java.util.List; + +public class Gaming { + private int n; + private final List cars; + public Gaming(List cars, int n){ + this.cars = cars; + this.n = n + } + + public void start() { + System.out.printf("%n실행 결과%n"); + for (int i=n;i>0;i--) { + for (Car car : cars) { + int ran = Randoms.pickNumberInRange(0,9); + final int movingNumber = 4; + if (ran >= movingNumber) {car.move();} + String howMove = "-".repeat(car.getMoveCount()); + System.out.printf("%s : %s%n", car.getName(),howMove); + } + System.out.println(" "); //한칸 띄기용 + } + } +} From 14f90b41215963b52464d8f165c0fa18f5fbdf76 Mon Sep 17 00:00:00 2001 From: code6150 Date: Mon, 6 Apr 2026 21:06:09 +0900 Subject: [PATCH 14/17] =?UTF-8?q?fix:=20=EC=84=B8=EB=AF=B8=EC=BD=9C?= =?UTF-8?q?=EB=A1=A0=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/Gaming.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/racingcar/Gaming.java b/src/main/java/racingcar/Gaming.java index 82c97a7..e0d30ed 100644 --- a/src/main/java/racingcar/Gaming.java +++ b/src/main/java/racingcar/Gaming.java @@ -9,7 +9,7 @@ public class Gaming { private final List cars; public Gaming(List cars, int n){ this.cars = cars; - this.n = n + this.n = n; } public void start() { From c862109bfbfc50fbfe17320785648be7b6591c34 Mon Sep 17 00:00:00 2001 From: code6150 Date: Mon, 6 Apr 2026 21:27:59 +0900 Subject: [PATCH 15/17] =?UTF-8?q?refactor:=20Input=EB=B6=84=EB=A6=AC,=20?= =?UTF-8?q?=EC=98=88=EC=99=B8=EC=B2=98=ED=8C=8C=EC=9D=BC=20=EB=B6=84?= =?UTF-8?q?=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/Application.java | 10 +++++----- src/main/java/racingcar/InputValidator.java | 6 ++++++ src/main/java/racingcar/InputView.java | 15 +++++++++++++++ 3 files changed, 26 insertions(+), 5 deletions(-) create mode 100644 src/main/java/racingcar/InputValidator.java create mode 100644 src/main/java/racingcar/InputView.java diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index e39ef5c..77bafae 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -5,10 +5,9 @@ public class Application { public static void main(String[] args) { - Scanner in = new Scanner(System.in); - System.out.println("경주할 자동차 이름을 입력하세요.(이름은 쉼표(,) 기준으로 구분)"); - String a = in.nextLine(); + + List cars = new ArrayList<>(); for (String name : a.split(",")) { if (name.isEmpty()) {throw new IllegalArgumentException("왜안적음");} @@ -18,10 +17,9 @@ public static void main(String[] args) { } Set dupCheck = new HashSet<>(); for (Car c : cars){dupCheck.add(c.getName());} - if (dupCheck.size() != cars.size()) {throw new IllegalArgumentException("중복이름있음");} - System.out.println("시도할 회수는 몇회인가요?"); + int n; try { n = in.nextInt(); @@ -32,6 +30,8 @@ public static void main(String[] args) { throw new IllegalArgumentException("숫자안적음"); } + Gaming g = new Gaming(cars, n); + g.start(); Winner w = new Winner(cars); System.out.println("최종 우승자 : " + String.join(", ", w.findWinner())); diff --git a/src/main/java/racingcar/InputValidator.java b/src/main/java/racingcar/InputValidator.java new file mode 100644 index 0000000..7489080 --- /dev/null +++ b/src/main/java/racingcar/InputValidator.java @@ -0,0 +1,6 @@ +package racingcar; + +public class Excepting { + + +} diff --git a/src/main/java/racingcar/InputView.java b/src/main/java/racingcar/InputView.java new file mode 100644 index 0000000..5d94ad1 --- /dev/null +++ b/src/main/java/racingcar/InputView.java @@ -0,0 +1,15 @@ +package racingcar; + +import java.util.Scanner; + +public class InputView { + private static final Scanner in = new Scanner(System.in); + public static String inputCarName() { + System.out.println("경주할 자동차 이름을 입력하세요.(이름은 쉼표(,) 기준으로 구분)"); + return in.nextLine(); + } + public static int inputRepeatN() { + System.out.println("시도할 회수는 몇회인가요?"); + return in.nextInt(); + } +} From 010b52e05ed024705bcc8de4dc20320f16aa6720 Mon Sep 17 00:00:00 2001 From: code6150 Date: Mon, 6 Apr 2026 21:36:29 +0900 Subject: [PATCH 16/17] =?UTF-8?q?refactor:=20inputValidator=20=EB=B6=84?= =?UTF-8?q?=EB=A6=AC=20=EB=A7=88=EB=AC=B4=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/Application.java | 24 ---------------- src/main/java/racingcar/Gaming.java | 2 +- src/main/java/racingcar/InputValidator.java | 31 +++++++++++++++++++-- 3 files changed, 30 insertions(+), 27 deletions(-) diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index 77bafae..678d6ce 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -1,6 +1,4 @@ package racingcar; - -import camp.nextstep.edu.missionutils.Randoms; import java.util.*; public class Application { @@ -8,28 +6,6 @@ public static void main(String[] args) { - List cars = new ArrayList<>(); - for (String name : a.split(",")) { - if (name.isEmpty()) {throw new IllegalArgumentException("왜안적음");} - if (name.length() > 5) {throw new IllegalArgumentException("이름5자초과됨");} - if (name.contains(" ")) {throw new IllegalArgumentException("공백포함됨");} - cars.add(new Car(name)); - } - Set dupCheck = new HashSet<>(); - for (Car c : cars){dupCheck.add(c.getName());} - if (dupCheck.size() != cars.size()) {throw new IllegalArgumentException("중복이름있음");} - - - int n; - try { - n = in.nextInt(); - if (n <= 0) { - throw new IllegalArgumentException("0번이하"); - } - } catch (Exception e) { - throw new IllegalArgumentException("숫자안적음"); - } - Gaming g = new Gaming(cars, n); g.start(); diff --git a/src/main/java/racingcar/Gaming.java b/src/main/java/racingcar/Gaming.java index e0d30ed..a6256c8 100644 --- a/src/main/java/racingcar/Gaming.java +++ b/src/main/java/racingcar/Gaming.java @@ -5,7 +5,7 @@ import java.util.List; public class Gaming { - private int n; + private final int n; private final List cars; public Gaming(List cars, int n){ this.cars = cars; diff --git a/src/main/java/racingcar/InputValidator.java b/src/main/java/racingcar/InputValidator.java index 7489080..61a0795 100644 --- a/src/main/java/racingcar/InputValidator.java +++ b/src/main/java/racingcar/InputValidator.java @@ -1,6 +1,33 @@ package racingcar; -public class Excepting { +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; - +public class InputValidator { + public void CarNamesValidator(String name) { + List cars = new ArrayList<>(); + for (String a : name.split(",")) { + CarNameValidator(a); + cars.add(new Car(a)); + } + Set dupCheck = new HashSet<>(); + for (Car c : cars){dupCheck.add(c.getName());} + if (dupCheck.size() != cars.size()) {throw new IllegalArgumentException("중복이름있음");} + } + + private void CarNameValidator(String name) { + if (name.isEmpty()) {throw new IllegalArgumentException("왜안적음");} + if (name.length() > 5) {throw new IllegalArgumentException("이름5자초과됨");} + if (name.contains(" ")) {throw new IllegalArgumentException("공백포함됨");} + } + + public void IntegerValidator(String n) { + int count; + try {count = Integer.parseInt(n);} + catch (NumberFormatException e) {throw new IllegalArgumentException("숫자안적음");} + + if (count <= 0) {throw new IllegalArgumentException("0번이하");} + } } From 84a195c2dc58e5d4a27a4095627741f71609c068 Mon Sep 17 00:00:00 2001 From: code6150 Date: Mon, 6 Apr 2026 21:41:45 +0900 Subject: [PATCH 17/17] =?UTF-8?q?refactor:=20Application=EC=97=90=20?= =?UTF-8?q?=EC=A1=B0=EB=A6=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/Application.java | 4 ++++ src/main/java/racingcar/InputValidator.java | 6 ++++-- src/main/java/racingcar/InputView.java | 8 ++++---- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index 678d6ce..39a5476 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -3,7 +3,11 @@ public class Application { public static void main(String[] args) { + InputView input = new InputView(); + InputValidator iv = new InputValidator(); + List cars = iv.CarNamesValidator(input.inputCarName()); + int n = iv.IntegerValidator(input.inputRepeatN()); Gaming g = new Gaming(cars, n); diff --git a/src/main/java/racingcar/InputValidator.java b/src/main/java/racingcar/InputValidator.java index 61a0795..2e540c0 100644 --- a/src/main/java/racingcar/InputValidator.java +++ b/src/main/java/racingcar/InputValidator.java @@ -6,7 +6,7 @@ import java.util.Set; public class InputValidator { - public void CarNamesValidator(String name) { + public List CarNamesValidator(String name) { List cars = new ArrayList<>(); for (String a : name.split(",")) { CarNameValidator(a); @@ -15,6 +15,7 @@ public void CarNamesValidator(String name) { Set dupCheck = new HashSet<>(); for (Car c : cars){dupCheck.add(c.getName());} if (dupCheck.size() != cars.size()) {throw new IllegalArgumentException("중복이름있음");} + return cars; } private void CarNameValidator(String name) { @@ -23,11 +24,12 @@ private void CarNameValidator(String name) { if (name.contains(" ")) {throw new IllegalArgumentException("공백포함됨");} } - public void IntegerValidator(String n) { + public int IntegerValidator(String n) { int count; try {count = Integer.parseInt(n);} catch (NumberFormatException e) {throw new IllegalArgumentException("숫자안적음");} if (count <= 0) {throw new IllegalArgumentException("0번이하");} + return count; } } diff --git a/src/main/java/racingcar/InputView.java b/src/main/java/racingcar/InputView.java index 5d94ad1..9732ecb 100644 --- a/src/main/java/racingcar/InputView.java +++ b/src/main/java/racingcar/InputView.java @@ -3,13 +3,13 @@ import java.util.Scanner; public class InputView { - private static final Scanner in = new Scanner(System.in); - public static String inputCarName() { + private final Scanner in = new Scanner(System.in); + public String inputCarName() { System.out.println("경주할 자동차 이름을 입력하세요.(이름은 쉼표(,) 기준으로 구분)"); return in.nextLine(); } - public static int inputRepeatN() { + public String inputRepeatN() { System.out.println("시도할 회수는 몇회인가요?"); - return in.nextInt(); + return in.nextLine(); } }