From 48114f3bff53378bab73c4c895cfa12523e72fc1 Mon Sep 17 00:00:00 2001 From: Choi Seongwon Date: Thu, 16 Mar 2023 00:00:42 +0900 Subject: [PATCH 01/16] docs: TODOList --- TODOList.md | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 TODOList.md diff --git a/TODOList.md b/TODOList.md new file mode 100644 index 0000000..5208e6a --- /dev/null +++ b/TODOList.md @@ -0,0 +1,9 @@ +# 기능 목록 +1-1. 경주할 자동차의 이름을 입력 받는다
+1-2. 시도할 횟수를 입력 받는다
+1-3. 잘못된 값을 입력할 경우 에러를 띄우고 다시 입력 받는다 +2. 시도할 횟수에 맞게 무작위 값을 계산한다 +3. 무작위 값에 따라 자동차들을 전진 시킨다 +4. 전진시킬 때마다 각 차수별 실행 결과를 출력한다 +5. 전진이 끝나면 우승자를 뽑는다 +6. 우승자들을 출력한다 \ No newline at end of file From 6f64ef8c5caa63d9faf5bea7723ef519531fe24a Mon Sep 17 00:00:00 2001 From: Choi Seongwon Date: Thu, 16 Mar 2023 00:26:44 +0900 Subject: [PATCH 02/16] docs: add validation TODOList.md --- TODOList.md | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/TODOList.md b/TODOList.md index 5208e6a..8596404 100644 --- a/TODOList.md +++ b/TODOList.md @@ -1,9 +1,10 @@ # 기능 목록 -1-1. 경주할 자동차의 이름을 입력 받는다
-1-2. 시도할 횟수를 입력 받는다
-1-3. 잘못된 값을 입력할 경우 에러를 띄우고 다시 입력 받는다 -2. 시도할 횟수에 맞게 무작위 값을 계산한다 -3. 무작위 값에 따라 자동차들을 전진 시킨다 -4. 전진시킬 때마다 각 차수별 실행 결과를 출력한다 -5. 전진이 끝나면 우승자를 뽑는다 -6. 우승자들을 출력한다 \ No newline at end of file +1. 경주할 자동차의 이름을 입력 받는다 +2. 입력 받은 자동차 이름을 검증 한 후 실패시 에러를 띄운다 +3. 시도할 횟수를 입력 받는다 +4. 시도할 횟수를 검증 한 후 실패시 에러를 띄운다 +5. 시도할 횟수에 맞게 무작위 값을 계산한다 +6. 무작위 값에 따라 자동차들을 전진 시킨다 +7. 전진시킬 때마다 각 차수별 실행 결과를 출력한다 +8. 전진이 끝나면 우승자를 뽑는다 +9. 우승자들을 출력한다 \ No newline at end of file From 7b5be118e86a9cf77c59aa45b5f348393f8f44e3 Mon Sep 17 00:00:00 2001 From: Choi Seongwon Date: Thu, 16 Mar 2023 00:31:13 +0900 Subject: [PATCH 03/16] feat: get Car names --- src/main/java/racingcar/Application.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index b9ed045..8280ebd 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -1,7 +1,25 @@ package racingcar; +import camp.nextstep.edu.missionutils.Console; + +import java.util.ArrayList; +import java.util.List; + public class Application { public static void main(String[] args) { // TODO 구현 진행 + List cars = getCars(); + } + + public static List getCars() { + String carName = Console.readLine(); + String[] carNames = carName.split(","); + + List Cars = new ArrayList<>(); + for (String name : carNames) { + Car car = new Car(name); + Cars.add(car); + } + return Cars; } } From bba56e1050cd702c17a3b19b6596a396d4100e3f Mon Sep 17 00:00:00 2001 From: Choi Seongwon Date: Thu, 16 Mar 2023 23:20:03 +0900 Subject: [PATCH 04/16] feat: validate getCars --- src/main/java/racingcar/Application.java | 20 ++--------- src/main/java/racingcar/Car.java | 8 +++++ src/main/java/racingcar/CarGame.java | 17 +++++++++ src/main/java/view/InputValidator.java | 37 ++++++++++++++++++++ src/main/java/view/InputView.java | 44 ++++++++++++++++++++++++ 5 files changed, 108 insertions(+), 18 deletions(-) create mode 100644 src/main/java/racingcar/CarGame.java create mode 100644 src/main/java/view/InputValidator.java create mode 100644 src/main/java/view/InputView.java diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index 8280ebd..4be2d1c 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -1,25 +1,9 @@ package racingcar; -import camp.nextstep.edu.missionutils.Console; - -import java.util.ArrayList; -import java.util.List; - public class Application { public static void main(String[] args) { // TODO 구현 진행 - List cars = getCars(); - } - - public static List getCars() { - String carName = Console.readLine(); - String[] carNames = carName.split(","); - - List Cars = new ArrayList<>(); - for (String name : carNames) { - Car car = new Car(name); - Cars.add(car); - } - return Cars; + CarGame carGame = new CarGame(); + carGame.start(); } } diff --git a/src/main/java/racingcar/Car.java b/src/main/java/racingcar/Car.java index ab3df94..8fa1023 100644 --- a/src/main/java/racingcar/Car.java +++ b/src/main/java/racingcar/Car.java @@ -9,4 +9,12 @@ public Car(String name) { } // 추가 기능 구현 + + public String getName() { + return name; + } + + public int getPosition() { + return position; + } } diff --git a/src/main/java/racingcar/CarGame.java b/src/main/java/racingcar/CarGame.java new file mode 100644 index 0000000..bb8bc78 --- /dev/null +++ b/src/main/java/racingcar/CarGame.java @@ -0,0 +1,17 @@ +package racingcar; + +import view.InputView; + +import java.util.List; + +public class CarGame { + private final InputView inputView; + + public CarGame() { + this.inputView = new InputView(); + } + + public void start() { + List cars = inputView.getCars(); + } +} diff --git a/src/main/java/view/InputValidator.java b/src/main/java/view/InputValidator.java new file mode 100644 index 0000000..986ced5 --- /dev/null +++ b/src/main/java/view/InputValidator.java @@ -0,0 +1,37 @@ +package view; + +import racingcar.Car; + +import java.util.List; +import java.util.regex.PatternSyntaxException; + +public class InputValidator { + public String[] validateSplit(String carString) { + try { + return carString.split(","); + } catch (PatternSyntaxException e) { + throw new IllegalArgumentException("[ERROR] 자동차 이름은 쉼표를 기준으로 구분되어야 한다."); + } + } + + public void validateCarNames(List cars) { + for (Car car : cars) { + String carName = car.getName(); + if (carName.length() > 5) { + throw new IllegalArgumentException("[ERROR] 자동차 이름은 5자 이하만 가능하다."); + } + } + } + + public void validateEmpty(String[] carNames) { + if (carNames.length == 0) { + throw new IllegalArgumentException("[ERROR] 자동차는 1대 이상 입력 되어야 한다."); + } + for (String carName : + carNames) { + if (carName.trim().isEmpty()) { + throw new IllegalArgumentException("[ERROR] 자동차 이름은 빈칸일 수 없다."); + } + } + } +} diff --git a/src/main/java/view/InputView.java b/src/main/java/view/InputView.java new file mode 100644 index 0000000..a2a5f72 --- /dev/null +++ b/src/main/java/view/InputView.java @@ -0,0 +1,44 @@ +package view; + +import camp.nextstep.edu.missionutils.Console; +import racingcar.Car; + +import java.util.ArrayList; +import java.util.List; + +public class InputView { + private final InputValidator inputValidator; + + public InputView() { + this.inputValidator = new InputValidator(); + } + + public List getCars() { + while (true) { + try { + System.out.println("경주할 자동차 이름을 입력하세요. (이름은 쉼표(,) 기준으로 구분)"); + String carString = Console.readLine(); + String[] carNames = validateCarString(carString); + return validateCarNames(carNames); + } catch (IllegalArgumentException e) { + System.out.println(e.getMessage()); + } + } + } + + private String[] validateCarString(String carString) { + String[] carNames = inputValidator.validateSplit(carString); + inputValidator.validateEmpty(carNames); + return carNames; + } + + private List validateCarNames(String[] carNames) { + List cars = new ArrayList<>(); + for (String carName : + carNames) { + cars.add(new Car(carName)); + } + inputValidator.validateCarNames(cars); + return cars; + } +} From 97352a9d60f5fddb071c48bc098b9cec147d88da Mon Sep 17 00:00:00 2001 From: Choi Seongwon Date: Thu, 16 Mar 2023 23:26:30 +0900 Subject: [PATCH 05/16] feat: getTrial and validate --- src/main/java/racingcar/CarGame.java | 1 + src/main/java/view/InputValidator.java | 8 ++++++++ src/main/java/view/InputView.java | 12 ++++++++++++ 3 files changed, 21 insertions(+) diff --git a/src/main/java/racingcar/CarGame.java b/src/main/java/racingcar/CarGame.java index bb8bc78..05a58a9 100644 --- a/src/main/java/racingcar/CarGame.java +++ b/src/main/java/racingcar/CarGame.java @@ -13,5 +13,6 @@ public CarGame() { public void start() { List cars = inputView.getCars(); + Integer trial = inputView.getTrial(); } } diff --git a/src/main/java/view/InputValidator.java b/src/main/java/view/InputValidator.java index 986ced5..b40b9af 100644 --- a/src/main/java/view/InputValidator.java +++ b/src/main/java/view/InputValidator.java @@ -34,4 +34,12 @@ public void validateEmpty(String[] carNames) { } } } + + public Integer validateTrial(String trial) { + try { + return Integer.parseInt(trial); + } catch (NumberFormatException e) { + throw new IllegalArgumentException("[ERROR] 시도 횟수는 숫자여야 한다."); + } + } } diff --git a/src/main/java/view/InputView.java b/src/main/java/view/InputView.java index a2a5f72..3b30c11 100644 --- a/src/main/java/view/InputView.java +++ b/src/main/java/view/InputView.java @@ -41,4 +41,16 @@ private List validateCarNames(String[] carNames) { inputValidator.validateCarNames(cars); return cars; } + + public Integer getTrial() { + while (true) { + try { + System.out.println("시도할 횟수는 몇회인가요?"); + String trial = Console.readLine(); + return inputValidator.validateTrial(trial); + } catch (IllegalArgumentException e) { + System.out.println(e.getMessage()); + } + } + } } From 48f3e95c923e101b32b036daab649bcaa0edb375 Mon Sep 17 00:00:00 2001 From: Choi Seongwon Date: Thu, 16 Mar 2023 23:32:56 +0900 Subject: [PATCH 06/16] feat: create random number --- src/main/java/racingcar/CarGame.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/main/java/racingcar/CarGame.java b/src/main/java/racingcar/CarGame.java index 05a58a9..75a892e 100644 --- a/src/main/java/racingcar/CarGame.java +++ b/src/main/java/racingcar/CarGame.java @@ -1,5 +1,6 @@ package racingcar; +import camp.nextstep.edu.missionutils.Randoms; import view.InputView; import java.util.List; @@ -14,5 +15,18 @@ public CarGame() { public void start() { List cars = inputView.getCars(); Integer trial = inputView.getTrial(); + startGame(cars, trial); + } + + private void startGame(List cars, Integer trial) { + for (int i = 0; i < trial; i++) { + for (Car car : cars) { + go(car); + } + } + } + + private void go(Car car) { + int randomNum = Randoms.pickNumberInRange(0, 9); } } From 5aee29481d72e91f74a79a623845ad1c3a44261d Mon Sep 17 00:00:00 2001 From: Choi Seongwon Date: Thu, 16 Mar 2023 23:36:26 +0900 Subject: [PATCH 07/16] feat: make car go in appropriate condition --- src/main/java/racingcar/Car.java | 4 ++++ src/main/java/racingcar/CarGame.java | 7 +++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/main/java/racingcar/Car.java b/src/main/java/racingcar/Car.java index 8fa1023..5e91b90 100644 --- a/src/main/java/racingcar/Car.java +++ b/src/main/java/racingcar/Car.java @@ -17,4 +17,8 @@ public String getName() { public int getPosition() { return position; } + + public void go() { + this.position++; + } } diff --git a/src/main/java/racingcar/CarGame.java b/src/main/java/racingcar/CarGame.java index 75a892e..856962a 100644 --- a/src/main/java/racingcar/CarGame.java +++ b/src/main/java/racingcar/CarGame.java @@ -21,12 +21,15 @@ public void start() { private void startGame(List cars, Integer trial) { for (int i = 0; i < trial; i++) { for (Car car : cars) { - go(car); + goOrNot(car); } } } - private void go(Car car) { + private void goOrNot(Car car) { int randomNum = Randoms.pickNumberInRange(0, 9); + if (randomNum >= 4) { + car.go(); + } } } From b4ca696d6276186814a890271eb661d34cff99d4 Mon Sep 17 00:00:00 2001 From: Choi Seongwon Date: Thu, 16 Mar 2023 23:48:28 +0900 Subject: [PATCH 08/16] feat: print each result during game --- src/main/java/racingcar/CarGame.java | 5 +++++ src/main/java/view/OutputView.java | 26 ++++++++++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 src/main/java/view/OutputView.java diff --git a/src/main/java/racingcar/CarGame.java b/src/main/java/racingcar/CarGame.java index 856962a..a1b6dd9 100644 --- a/src/main/java/racingcar/CarGame.java +++ b/src/main/java/racingcar/CarGame.java @@ -2,14 +2,17 @@ import camp.nextstep.edu.missionutils.Randoms; import view.InputView; +import view.OutputView; import java.util.List; public class CarGame { private final InputView inputView; + private final OutputView outputView; public CarGame() { this.inputView = new InputView(); + this.outputView = new OutputView(); } public void start() { @@ -19,10 +22,12 @@ public void start() { } private void startGame(List cars, Integer trial) { + outputView.printInit(); for (int i = 0; i < trial; i++) { for (Car car : cars) { goOrNot(car); } + outputView.printResult(cars); } } diff --git a/src/main/java/view/OutputView.java b/src/main/java/view/OutputView.java new file mode 100644 index 0000000..d520551 --- /dev/null +++ b/src/main/java/view/OutputView.java @@ -0,0 +1,26 @@ +package view; + +import racingcar.Car; + +import java.util.List; + +public class OutputView { + public void printInit() { + System.out.println("실행 결과"); + } + + public void printResult(List cars) { + for (Car car : cars) { + printCarStatus(car); + } + System.out.println(); + } + + private void printCarStatus(Car car) { + System.out.print(car.getName() + " : "); + for (int i = 0; i < car.getPosition(); i++) { + System.out.print("-"); + } + System.out.println(); + } +} From 915c62c935a995b53a6335592bcc59be86ad3834 Mon Sep 17 00:00:00 2001 From: Choi Seongwon Date: Fri, 17 Mar 2023 00:17:06 +0900 Subject: [PATCH 09/16] feat: pick winner --- src/main/java/racingcar/CarGame.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/main/java/racingcar/CarGame.java b/src/main/java/racingcar/CarGame.java index a1b6dd9..7197bd4 100644 --- a/src/main/java/racingcar/CarGame.java +++ b/src/main/java/racingcar/CarGame.java @@ -4,6 +4,7 @@ import view.InputView; import view.OutputView; +import java.util.ArrayList; import java.util.List; public class CarGame { @@ -29,6 +30,7 @@ private void startGame(List cars, Integer trial) { } outputView.printResult(cars); } + List result = pickWinner(cars); } private void goOrNot(Car car) { @@ -37,4 +39,20 @@ private void goOrNot(Car car) { car.go(); } } + + private List pickWinner(List cars) { + List winner = new ArrayList<>(); + int MAX_DISTANCE = -1; + for (Car car : cars) { + if (car.getPosition() == MAX_DISTANCE) { + winner.add(car.getName()); + } + if (car.getPosition() > MAX_DISTANCE) { + MAX_DISTANCE = car.getPosition(); + winner.clear(); + winner.add(car.getName()); + } + } + return winner; + } } From 91670b676a4c593fd0315c41b9dc36a0a8b28f84 Mon Sep 17 00:00:00 2001 From: Choi Seongwon Date: Fri, 17 Mar 2023 00:20:58 +0900 Subject: [PATCH 10/16] feat: print final winner --- src/main/java/racingcar/CarGame.java | 1 + src/main/java/view/OutputView.java | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/src/main/java/racingcar/CarGame.java b/src/main/java/racingcar/CarGame.java index 7197bd4..f34eaf1 100644 --- a/src/main/java/racingcar/CarGame.java +++ b/src/main/java/racingcar/CarGame.java @@ -31,6 +31,7 @@ private void startGame(List cars, Integer trial) { outputView.printResult(cars); } List result = pickWinner(cars); + outputView.printFinalWinner(result); } private void goOrNot(Car car) { diff --git a/src/main/java/view/OutputView.java b/src/main/java/view/OutputView.java index d520551..5d77f3b 100644 --- a/src/main/java/view/OutputView.java +++ b/src/main/java/view/OutputView.java @@ -23,4 +23,8 @@ private void printCarStatus(Car car) { } System.out.println(); } + + public void printFinalWinner(List winner) { + System.out.println("최종 우승자 : " + String.join(", ", winner)); + } } From 83eb4819808964ac2339bf213aa2e281bbdc2809 Mon Sep 17 00:00:00 2001 From: Choi Seongwon Date: Fri, 17 Mar 2023 00:35:11 +0900 Subject: [PATCH 11/16] feat: add exception that trial cannot be minus --- src/main/java/view/InputValidator.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/view/InputValidator.java b/src/main/java/view/InputValidator.java index b40b9af..d5e86ef 100644 --- a/src/main/java/view/InputValidator.java +++ b/src/main/java/view/InputValidator.java @@ -37,7 +37,11 @@ public void validateEmpty(String[] carNames) { public Integer validateTrial(String trial) { try { - return Integer.parseInt(trial); + Integer trialNum = Integer.valueOf(trial); + if (trialNum < 0) { + throw new IllegalArgumentException("[ERROR] 시도 횟수는 음수일 수 없다."); + } + return trialNum; } catch (NumberFormatException e) { throw new IllegalArgumentException("[ERROR] 시도 횟수는 숫자여야 한다."); } From 145f84f4c47232f9d3a03aaf19f631d3652a38a0 Mon Sep 17 00:00:00 2001 From: Choi Seongwon Date: Sat, 25 Mar 2023 15:46:31 +0900 Subject: [PATCH 12/16] feat: change InputValidator class to static --- src/main/java/view/InputValidator.java | 8 ++++---- src/main/java/view/InputView.java | 13 ++++--------- 2 files changed, 8 insertions(+), 13 deletions(-) diff --git a/src/main/java/view/InputValidator.java b/src/main/java/view/InputValidator.java index d5e86ef..daff248 100644 --- a/src/main/java/view/InputValidator.java +++ b/src/main/java/view/InputValidator.java @@ -6,7 +6,7 @@ import java.util.regex.PatternSyntaxException; public class InputValidator { - public String[] validateSplit(String carString) { + public static String[] validateSplit(String carString) { try { return carString.split(","); } catch (PatternSyntaxException e) { @@ -14,7 +14,7 @@ public String[] validateSplit(String carString) { } } - public void validateCarNames(List cars) { + public static void validateCarNames(List cars) { for (Car car : cars) { String carName = car.getName(); if (carName.length() > 5) { @@ -23,7 +23,7 @@ public void validateCarNames(List cars) { } } - public void validateEmpty(String[] carNames) { + public static void validateEmpty(String[] carNames) { if (carNames.length == 0) { throw new IllegalArgumentException("[ERROR] 자동차는 1대 이상 입력 되어야 한다."); } @@ -35,7 +35,7 @@ public void validateEmpty(String[] carNames) { } } - public Integer validateTrial(String trial) { + public static Integer validateTrial(String trial) { try { Integer trialNum = Integer.valueOf(trial); if (trialNum < 0) { diff --git a/src/main/java/view/InputView.java b/src/main/java/view/InputView.java index 3b30c11..cba4fe3 100644 --- a/src/main/java/view/InputView.java +++ b/src/main/java/view/InputView.java @@ -7,11 +7,6 @@ import java.util.List; public class InputView { - private final InputValidator inputValidator; - - public InputView() { - this.inputValidator = new InputValidator(); - } public List getCars() { while (true) { @@ -27,8 +22,8 @@ public List getCars() { } private String[] validateCarString(String carString) { - String[] carNames = inputValidator.validateSplit(carString); - inputValidator.validateEmpty(carNames); + String[] carNames = InputValidator.validateSplit(carString); + InputValidator.validateEmpty(carNames); return carNames; } @@ -38,7 +33,7 @@ private List validateCarNames(String[] carNames) { carNames) { cars.add(new Car(carName)); } - inputValidator.validateCarNames(cars); + InputValidator.validateCarNames(cars); return cars; } @@ -47,7 +42,7 @@ public Integer getTrial() { try { System.out.println("시도할 횟수는 몇회인가요?"); String trial = Console.readLine(); - return inputValidator.validateTrial(trial); + return InputValidator.validateTrial(trial); } catch (IllegalArgumentException e) { System.out.println(e.getMessage()); } From 6e43090ad443d447434aea0fdf3a8c78b65bdfda Mon Sep 17 00:00:00 2001 From: Choi Seongwon Date: Sat, 25 Mar 2023 15:57:23 +0900 Subject: [PATCH 13/16] fix: change validate method return type to void --- src/main/java/view/InputValidator.java | 9 ++++----- src/main/java/view/InputView.java | 16 +++++++++------- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/src/main/java/view/InputValidator.java b/src/main/java/view/InputValidator.java index daff248..0b0716b 100644 --- a/src/main/java/view/InputValidator.java +++ b/src/main/java/view/InputValidator.java @@ -6,9 +6,9 @@ import java.util.regex.PatternSyntaxException; public class InputValidator { - public static String[] validateSplit(String carString) { + public static void validateSplit(String carString) { try { - return carString.split(","); + String[] split = carString.split(","); } catch (PatternSyntaxException e) { throw new IllegalArgumentException("[ERROR] 자동차 이름은 쉼표를 기준으로 구분되어야 한다."); } @@ -35,13 +35,12 @@ public static void validateEmpty(String[] carNames) { } } - public static Integer validateTrial(String trial) { + public static void validateTrial(String trial) { try { - Integer trialNum = Integer.valueOf(trial); + int trialNum = Integer.parseInt(trial); if (trialNum < 0) { throw new IllegalArgumentException("[ERROR] 시도 횟수는 음수일 수 없다."); } - return trialNum; } catch (NumberFormatException e) { throw new IllegalArgumentException("[ERROR] 시도 횟수는 숫자여야 한다."); } diff --git a/src/main/java/view/InputView.java b/src/main/java/view/InputView.java index cba4fe3..0f99cfc 100644 --- a/src/main/java/view/InputView.java +++ b/src/main/java/view/InputView.java @@ -13,21 +13,22 @@ public List getCars() { try { System.out.println("경주할 자동차 이름을 입력하세요. (이름은 쉼표(,) 기준으로 구분)"); String carString = Console.readLine(); - String[] carNames = validateCarString(carString); - return validateCarNames(carNames); + String[] carNames = getCarNamesStringArray(carString); + return getCarNamesCarList(carNames); } catch (IllegalArgumentException e) { System.out.println(e.getMessage()); } } } - private String[] validateCarString(String carString) { - String[] carNames = InputValidator.validateSplit(carString); + private String[] getCarNamesStringArray(String carString) { + InputValidator.validateSplit(carString); + String[] carNames = carString.split(","); InputValidator.validateEmpty(carNames); return carNames; } - private List validateCarNames(String[] carNames) { + private List getCarNamesCarList(String[] carNames) { List cars = new ArrayList<>(); for (String carName : carNames) { @@ -37,12 +38,13 @@ private List validateCarNames(String[] carNames) { return cars; } - public Integer getTrial() { + public int getTrial() { while (true) { try { System.out.println("시도할 횟수는 몇회인가요?"); String trial = Console.readLine(); - return InputValidator.validateTrial(trial); + InputValidator.validateTrial(trial); + return Integer.parseInt(trial); } catch (IllegalArgumentException e) { System.out.println(e.getMessage()); } From 61668ec7425ad7aa784eabb05e755bca77c1f94e Mon Sep 17 00:00:00 2001 From: Choi Seongwon Date: Sat, 25 Mar 2023 16:03:22 +0900 Subject: [PATCH 14/16] fix: extract method creating instance from getCarList --- src/main/java/view/InputView.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/main/java/view/InputView.java b/src/main/java/view/InputView.java index 0f99cfc..8b9f4be 100644 --- a/src/main/java/view/InputView.java +++ b/src/main/java/view/InputView.java @@ -14,7 +14,7 @@ public List getCars() { System.out.println("경주할 자동차 이름을 입력하세요. (이름은 쉼표(,) 기준으로 구분)"); String carString = Console.readLine(); String[] carNames = getCarNamesStringArray(carString); - return getCarNamesCarList(carNames); + return getCarList(carNames); } catch (IllegalArgumentException e) { System.out.println(e.getMessage()); } @@ -28,13 +28,18 @@ private String[] getCarNamesStringArray(String carString) { return carNames; } - private List getCarNamesCarList(String[] carNames) { + private List getCarList(String[] carNames) { + List cars = getCarArrayList(carNames); + InputValidator.validateCarNames(cars); + return cars; + } + + private List getCarArrayList(String[] carNames) { List cars = new ArrayList<>(); for (String carName : carNames) { cars.add(new Car(carName)); } - InputValidator.validateCarNames(cars); return cars; } From 3cd358a9cbcd75988197ee1c4303279910f7b887 Mon Sep 17 00:00:00 2001 From: Choi Seongwon Date: Sat, 25 Mar 2023 16:05:24 +0900 Subject: [PATCH 15/16] fix: change variable name from UPPER_CASE to camelCase --- src/main/java/racingcar/CarGame.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/racingcar/CarGame.java b/src/main/java/racingcar/CarGame.java index f34eaf1..1185042 100644 --- a/src/main/java/racingcar/CarGame.java +++ b/src/main/java/racingcar/CarGame.java @@ -43,13 +43,13 @@ private void goOrNot(Car car) { private List pickWinner(List cars) { List winner = new ArrayList<>(); - int MAX_DISTANCE = -1; + int maxDistance = -1; for (Car car : cars) { - if (car.getPosition() == MAX_DISTANCE) { + if (car.getPosition() == maxDistance) { winner.add(car.getName()); } - if (car.getPosition() > MAX_DISTANCE) { - MAX_DISTANCE = car.getPosition(); + if (car.getPosition() > maxDistance) { + maxDistance = car.getPosition(); winner.clear(); winner.add(car.getName()); } From 35bc1ff450a10208f94e5e10c8f91755da943b20 Mon Sep 17 00:00:00 2001 From: Choi Seongwon Date: Sat, 25 Mar 2023 16:07:45 +0900 Subject: [PATCH 16/16] fix: change "trial" type from Integer to int --- src/main/java/racingcar/CarGame.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/racingcar/CarGame.java b/src/main/java/racingcar/CarGame.java index 1185042..749419c 100644 --- a/src/main/java/racingcar/CarGame.java +++ b/src/main/java/racingcar/CarGame.java @@ -18,11 +18,11 @@ public CarGame() { public void start() { List cars = inputView.getCars(); - Integer trial = inputView.getTrial(); + int trial = inputView.getTrial(); startGame(cars, trial); } - private void startGame(List cars, Integer trial) { + private void startGame(List cars, int trial) { outputView.printInit(); for (int i = 0; i < trial; i++) { for (Car car : cars) {