From 2af44450db5df904f0201214a6b0db2e0f5c2ddf Mon Sep 17 00:00:00 2001 From: legendary_octopus Date: Sat, 7 Sep 2024 14:13:51 +0900 Subject: [PATCH 01/20] =?UTF-8?q?Faet=20:=20=EC=9E=85=EB=A0=A5=EA=B0=92=20?= =?UTF-8?q?=EB=B0=9B=EA=B8=B0,=20=EC=9E=85=EB=A0=A5=EA=B0=92=20=EA=B2=80?= =?UTF-8?q?=EC=A6=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/README.md | 27 ++++++++++ src/main/java/racingcar/Application.java | 8 ++- .../racingcar/controller/GameController.java | 7 +++ .../racingcar/controller/InputController.java | 27 ++++++++++ src/main/java/racingcar/model/Car.java | 5 ++ src/main/java/racingcar/model/NameValid.java | 49 +++++++++++++++++++ .../java/racingcar/model/NumberVaild.java | 34 +++++++++++++ src/main/java/racingcar/view/InputView.java | 19 +++++++ src/main/java/racingcar/view/ResultView.java | 4 ++ 9 files changed, 179 insertions(+), 1 deletion(-) create mode 100644 src/main/java/racingcar/controller/GameController.java create mode 100644 src/main/java/racingcar/controller/InputController.java create mode 100644 src/main/java/racingcar/model/Car.java create mode 100644 src/main/java/racingcar/model/NameValid.java create mode 100644 src/main/java/racingcar/model/NumberVaild.java create mode 100644 src/main/java/racingcar/view/InputView.java create mode 100644 src/main/java/racingcar/view/ResultView.java diff --git a/docs/README.md b/docs/README.md index e69de29..fed03fe 100644 --- a/docs/README.md +++ b/docs/README.md @@ -0,0 +1,27 @@ +## 기능명세 +### 1. 자동차 이름을 입력받기 위한 화면을 구성한다. +- 자동차 이름 입력받기 + - 자동차 이름이 5자 이하인 경우에만 입력받기 + - 자동차 이름에 쉼표(,)로 구분된 이름이 1개 이상인 경우에만 입력받기 + - 자동차 이름에 특수문자 또는 숫자가 포함되어 있지 않은 경우에만 입력받기 + - 같은 이름의 자동차가 존재하지 않는 경우에만 입력받기 +- 자동차 이름 저장하기 + - 자동차 이름을 쉼표(,)로 구분하여 저장하기 +- 예외 발생 시 처음부터 실행 + +### 2. 시도할 회수를 입력받기 위한 화면을 구성한다. +- 시도할 회수 입력받기 + - 시도할 회수가 1 이상인 경우에만 입력받기 + - 시도할 회수가 숫자인 경우에만 입력받기 +- 시도할 회수 저장하기 + - 시도할 회수를 저장하기 + - 정수로 저장하기 +- 예외 발생 시 처음부터 실행 + +### 3. 자동차 경주를 진행한다. +- 시도할 회수를 입력 받은 대로 자동차를 전진시킨다. +- 차수별 자동차 이름과 전진한 거리를 출력한다. + +### 4. 경주 결과를 출력한다. +- 경주 결과를 출력한다. +- 우승자를 출력한다. \ No newline at end of file diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index a17a52e..9b65f4a 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -1,7 +1,13 @@ package racingcar; +import static racingcar.controller.InputController.createRacingCar; +import static racingcar.controller.InputController.setRoundNum; +import static racingcar.view.InputView.carNameInput; + public class Application { public static void main(String[] args) { // TODO: 프로그램 구현 + createRacingCar(); + setRoundNum(); } -} +} \ No newline at end of file diff --git a/src/main/java/racingcar/controller/GameController.java b/src/main/java/racingcar/controller/GameController.java new file mode 100644 index 0000000..e17c486 --- /dev/null +++ b/src/main/java/racingcar/controller/GameController.java @@ -0,0 +1,7 @@ +package racingcar.controller; + +public class GameController { + public static void startGame() { + + } +} diff --git a/src/main/java/racingcar/controller/InputController.java b/src/main/java/racingcar/controller/InputController.java new file mode 100644 index 0000000..e36e0f1 --- /dev/null +++ b/src/main/java/racingcar/controller/InputController.java @@ -0,0 +1,27 @@ +package racingcar.controller; +import racingcar.model.NameValid; +import racingcar.model.NumberVaild; +import racingcar.view.InputView; + +import static racingcar.view.InputView.carNameInput; + +public class InputController { + // 레이싱 자동차를 생성한다. + public static void createRacingCar() { + try{ + NameValid nameValid = new NameValid(carNameInput()); + // return new RacingCar(nameValid); + }catch (IllegalArgumentException e){ + createRacingCar(); + } + } + + public static void setRoundNum() { + try { + NumberVaild validation = new NumberVaild(InputView.tryCountInput()); + // eturn Integer.parseInt(validation.toString()); + } catch (IllegalArgumentException e) { + setRoundNum(); + } + } +} diff --git a/src/main/java/racingcar/model/Car.java b/src/main/java/racingcar/model/Car.java new file mode 100644 index 0000000..ab97199 --- /dev/null +++ b/src/main/java/racingcar/model/Car.java @@ -0,0 +1,5 @@ +package racingcar.model; + +public class Car { + +} diff --git a/src/main/java/racingcar/model/NameValid.java b/src/main/java/racingcar/model/NameValid.java new file mode 100644 index 0000000..2422c4a --- /dev/null +++ b/src/main/java/racingcar/model/NameValid.java @@ -0,0 +1,49 @@ +package racingcar.model; + +import java.util.ArrayList; +import java.util.Arrays; + +public class NameValid { + final String carName; + final ArrayList names; + + public static ArrayList toArrayList(String carsString) { + String[] carNames = carsString.split(","); + ArrayList names = new ArrayList<>(); + names.addAll(Arrays.asList(carNames)); + return names; + } + + public NameValid(String carName) { + this.carName = carName; + this.names = toArrayList(carName); + isValid(); + } + + // 자동차 이름이 5자 이하인지 확인 + public void isNameValid() { + for (String name : names) { + if (name.length() > 5) { + throw new IllegalArgumentException("자동차 이름은 5자 이하만 가능합니다."); + } + } + } + + // 자동차 이름이 중복되는지 확인 + public void isNameDuplicate() { + for (int i = 0; i < names.size(); i++) { + for (int j = i + 1; j < names.size(); j++) { + if (names.get(i).equals(names.get(j))) { + // 에러 반환 + throw new IllegalArgumentException("중복된 이름이 존재합니다."); + } + } + } + } + + // 자동차 이름이 유효한지 확인 + public void isValid() { + isNameValid(); + isNameDuplicate(); + } +} diff --git a/src/main/java/racingcar/model/NumberVaild.java b/src/main/java/racingcar/model/NumberVaild.java new file mode 100644 index 0000000..65622a0 --- /dev/null +++ b/src/main/java/racingcar/model/NumberVaild.java @@ -0,0 +1,34 @@ +package racingcar.model; + +public class NumberVaild { + private int number; + + public NumberVaild(int number) { + this.number = number; + isValid(); + } + + // 숫자가 맞는지 확인한다. + public void isValid() { + isNumber(); + isPositiveNumber(); + } + + // 숫자만 입력했는지 확인한다. + public void isNumber() { + if (!String.valueOf(number).matches("^[0-9]*$")) { + throw new IllegalArgumentException("숫자만 입력해주세요."); + } + } + + // 0보다 큰 숫자인지 확인한다. + public void isPositiveNumber() { + if (number < 0) { + throw new IllegalArgumentException("0보다 큰 숫자를 입력해주세요."); + } + } + + public int getNumber() { + return number; + } +} diff --git a/src/main/java/racingcar/view/InputView.java b/src/main/java/racingcar/view/InputView.java new file mode 100644 index 0000000..2c2af17 --- /dev/null +++ b/src/main/java/racingcar/view/InputView.java @@ -0,0 +1,19 @@ +package racingcar.view; +import java.util.Scanner; + +public class InputView { + + // 자동차의 이름을 입력받는다. + public static String carNameInput() { + Scanner scanner = new Scanner(System.in); + System.out.println("경주할 자동차 이름을 입력하세요.(이름은 쉼표(,) 기준으로 구분)"); + return scanner.nextLine(); + } + + // 시도할 회수를 입력받는다. + public static int tryCountInput() { + Scanner scanner = new Scanner(System.in); + System.out.println("시도할 회수는 몇회인가요?"); + return scanner.nextInt(); + } +} diff --git a/src/main/java/racingcar/view/ResultView.java b/src/main/java/racingcar/view/ResultView.java new file mode 100644 index 0000000..930f149 --- /dev/null +++ b/src/main/java/racingcar/view/ResultView.java @@ -0,0 +1,4 @@ +package racingcar.view; + +public class ResultView { +} From 337987a638b9ad8a74af16506a70cb2ff7514f5c Mon Sep 17 00:00:00 2001 From: legendary_octopus Date: Sat, 7 Sep 2024 14:46:56 +0900 Subject: [PATCH 02/20] =?UTF-8?q?Faet=20:=20=EC=95=9E=EC=9C=BC=EB=A1=9C=20?= =?UTF-8?q?=EC=A0=84=EC=A7=84=20=EA=B8=B0=EB=8A=A5=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/Application.java | 14 +++++++++++ .../racingcar/controller/InputController.java | 14 +++++------ src/main/java/racingcar/model/Car.java | 24 ++++++++++++++++++- src/main/java/racingcar/model/NameValid.java | 9 ++++--- src/main/java/racingcar/model/RacingCar.java | 21 ++++++++++++++++ .../java/racingcar/model/RandomNumber.java | 10 ++++++++ src/main/java/racingcar/view/ResultView.java | 15 ++++++++++++ 7 files changed, 96 insertions(+), 11 deletions(-) create mode 100644 src/main/java/racingcar/model/RacingCar.java create mode 100644 src/main/java/racingcar/model/RandomNumber.java diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index 9b65f4a..52b4112 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -1,13 +1,27 @@ package racingcar; +import racingcar.model.RacingCar; + import static racingcar.controller.InputController.createRacingCar; import static racingcar.controller.InputController.setRoundNum; import static racingcar.view.InputView.carNameInput; +import static racingcar.view.ResultView.printResult; public class Application { public static void main(String[] args) { // TODO: 프로그램 구현 createRacingCar(); setRoundNum(); + startGame(); + } + + // 게임 시작 + public static void startGame() { + // TODO 구현 + // 회수만큼 실행 + printResult(); + for (int i = 0; i < setRoundNum(); i++) { + RacingCar.moveCars(); + } } } \ No newline at end of file diff --git a/src/main/java/racingcar/controller/InputController.java b/src/main/java/racingcar/controller/InputController.java index e36e0f1..3a797a8 100644 --- a/src/main/java/racingcar/controller/InputController.java +++ b/src/main/java/racingcar/controller/InputController.java @@ -1,27 +1,27 @@ package racingcar.controller; import racingcar.model.NameValid; import racingcar.model.NumberVaild; +import racingcar.model.RacingCar; import racingcar.view.InputView; - import static racingcar.view.InputView.carNameInput; public class InputController { // 레이싱 자동차를 생성한다. - public static void createRacingCar() { + public static RacingCar createRacingCar() { try{ NameValid nameValid = new NameValid(carNameInput()); - // return new RacingCar(nameValid); + return new RacingCar(nameValid.getNames()); }catch (IllegalArgumentException e){ - createRacingCar(); + return createRacingCar(); } } - public static void setRoundNum() { + public static int setRoundNum() { try { NumberVaild validation = new NumberVaild(InputView.tryCountInput()); - // eturn Integer.parseInt(validation.toString()); + return validation.getNumber(); } catch (IllegalArgumentException e) { - setRoundNum(); + return setRoundNum(); } } } diff --git a/src/main/java/racingcar/model/Car.java b/src/main/java/racingcar/model/Car.java index ab97199..e01ad2c 100644 --- a/src/main/java/racingcar/model/Car.java +++ b/src/main/java/racingcar/model/Car.java @@ -1,5 +1,27 @@ package racingcar.model; -public class Car { +public class Car{ + private String name; + private int position; + public Car(String name){ + this.name = name; + this.position = 0; + } + + // 라운드 결과 출력 + public void printRoundResult(){ + System.out.print(name + " : "); + for(int i = 0; i < position; i++){ + System.out.print("-"); + } + System.out.println(); + } + + public void move(){ + // 랜덤 값이 4 이상이면 전진한다. + if(RandomNumber.getRandomNumber() >= 4){ + position++; + } + } } diff --git a/src/main/java/racingcar/model/NameValid.java b/src/main/java/racingcar/model/NameValid.java index 2422c4a..7aa69d0 100644 --- a/src/main/java/racingcar/model/NameValid.java +++ b/src/main/java/racingcar/model/NameValid.java @@ -8,9 +8,8 @@ public class NameValid { final ArrayList names; public static ArrayList toArrayList(String carsString) { - String[] carNames = carsString.split(","); - ArrayList names = new ArrayList<>(); - names.addAll(Arrays.asList(carNames)); + String[] carNames = carsString.trim().split(","); + ArrayList names = new ArrayList<>(Arrays.asList(carNames)); return names; } @@ -46,4 +45,8 @@ public void isValid() { isNameValid(); isNameDuplicate(); } + + public ArrayList getNames() { + return names; + } } diff --git a/src/main/java/racingcar/model/RacingCar.java b/src/main/java/racingcar/model/RacingCar.java new file mode 100644 index 0000000..c66d7ae --- /dev/null +++ b/src/main/java/racingcar/model/RacingCar.java @@ -0,0 +1,21 @@ +package racingcar.model; + +import java.util.ArrayList; + +public class RacingCar { + private static final ArrayList cars = new ArrayList<>(); + + public RacingCar(ArrayList cars) { + for (String car : cars) { + RacingCar.cars.add(new Car(car)); + } + } + + // 자동차들을 이동시킨다. + public static void moveCars() { + for (Car car : cars) { + car.move(); + car.printRoundResult(); + } + } +} diff --git a/src/main/java/racingcar/model/RandomNumber.java b/src/main/java/racingcar/model/RandomNumber.java new file mode 100644 index 0000000..6d0b2c2 --- /dev/null +++ b/src/main/java/racingcar/model/RandomNumber.java @@ -0,0 +1,10 @@ +package racingcar.model; + +public class RandomNumber { + private static final int MAX_NUMBER = 10; + private static final int MIN_NUMBER = 0; + + public static int getRandomNumber() { + return (int) (Math.random() * (MAX_NUMBER - MIN_NUMBER + 1)) + MIN_NUMBER; + } +} diff --git a/src/main/java/racingcar/view/ResultView.java b/src/main/java/racingcar/view/ResultView.java index 930f149..80a4a5f 100644 --- a/src/main/java/racingcar/view/ResultView.java +++ b/src/main/java/racingcar/view/ResultView.java @@ -1,4 +1,19 @@ package racingcar.view; public class ResultView { + + // 경주 결과를 출력한다. + public static void printResult() { + System.out.println("실행 결과"); + } + + // 경주 과정을 출력한다. + public static void printProcess() { + System.out.println("샬라샬라"); + } + + // 최종 우승자를 출력한다. + public static void printWinner() { + System.out.println("최종 우승자: "); + } } From 6dc5694c7a197a7f08b8b23e6a76b384da9d61be Mon Sep 17 00:00:00 2001 From: legendary_octopus Date: Sat, 7 Sep 2024 14:59:59 +0900 Subject: [PATCH 03/20] =?UTF-8?q?Faet=20:=20=EC=9A=B0=EC=8A=B9=EC=9E=90=20?= =?UTF-8?q?=ED=99=95=EC=9D=B8=20=EA=B8=B0=EB=8A=A5=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/Application.java | 9 +++++---- .../racingcar/controller/GameController.java | 7 ------- src/main/java/racingcar/model/Car.java | 9 +++++++++ src/main/java/racingcar/model/NumberVaild.java | 2 +- src/main/java/racingcar/model/RacingCar.java | 17 +++++++++++++++++ src/main/java/racingcar/view/ResultView.java | 15 ++++++++------- 6 files changed, 40 insertions(+), 19 deletions(-) delete mode 100644 src/main/java/racingcar/controller/GameController.java diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index 52b4112..1c19f73 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -11,17 +11,18 @@ public class Application { public static void main(String[] args) { // TODO: 프로그램 구현 createRacingCar(); - setRoundNum(); startGame(); } // 게임 시작 public static void startGame() { - // TODO 구현 - // 회수만큼 실행 + int round = setRoundNum(); + System.out.println(); printResult(); - for (int i = 0; i < setRoundNum(); i++) { + for (int i = 0; i < round; i++) { RacingCar.moveCars(); + System.out.println(); } + RacingCar.getWinners(); } } \ No newline at end of file diff --git a/src/main/java/racingcar/controller/GameController.java b/src/main/java/racingcar/controller/GameController.java deleted file mode 100644 index e17c486..0000000 --- a/src/main/java/racingcar/controller/GameController.java +++ /dev/null @@ -1,7 +0,0 @@ -package racingcar.controller; - -public class GameController { - public static void startGame() { - - } -} diff --git a/src/main/java/racingcar/model/Car.java b/src/main/java/racingcar/model/Car.java index e01ad2c..85ca890 100644 --- a/src/main/java/racingcar/model/Car.java +++ b/src/main/java/racingcar/model/Car.java @@ -24,4 +24,13 @@ public void move(){ position++; } } + + // 최대 위치 반환 + public int getPosition(){ + return position; + } + + public String getName() { + return name; + } } diff --git a/src/main/java/racingcar/model/NumberVaild.java b/src/main/java/racingcar/model/NumberVaild.java index 65622a0..6b49436 100644 --- a/src/main/java/racingcar/model/NumberVaild.java +++ b/src/main/java/racingcar/model/NumberVaild.java @@ -1,7 +1,7 @@ package racingcar.model; public class NumberVaild { - private int number; + private final int number; public NumberVaild(int number) { this.number = number; diff --git a/src/main/java/racingcar/model/RacingCar.java b/src/main/java/racingcar/model/RacingCar.java index c66d7ae..5eba1f7 100644 --- a/src/main/java/racingcar/model/RacingCar.java +++ b/src/main/java/racingcar/model/RacingCar.java @@ -2,6 +2,8 @@ import java.util.ArrayList; +import static racingcar.view.ResultView.printWinner; + public class RacingCar { private static final ArrayList cars = new ArrayList<>(); @@ -18,4 +20,19 @@ public static void moveCars() { car.printRoundResult(); } } + + // 우승자를 반환한다. + public static void getWinners() { + ArrayList winners = new ArrayList<>(); + int maxPosition = 0; + for (Car car : cars) { + maxPosition = Math.max(maxPosition, car.getPosition()); + } + for (Car car : cars) { + if (car.getPosition() == maxPosition) { + winners.add(car.getName()); + } + } + printWinner(winners); + } } diff --git a/src/main/java/racingcar/view/ResultView.java b/src/main/java/racingcar/view/ResultView.java index 80a4a5f..ff11f0b 100644 --- a/src/main/java/racingcar/view/ResultView.java +++ b/src/main/java/racingcar/view/ResultView.java @@ -1,5 +1,7 @@ package racingcar.view; +import java.util.ArrayList; + public class ResultView { // 경주 결과를 출력한다. @@ -7,13 +9,12 @@ public static void printResult() { System.out.println("실행 결과"); } - // 경주 과정을 출력한다. - public static void printProcess() { - System.out.println("샬라샬라"); - } - // 최종 우승자를 출력한다. - public static void printWinner() { - System.out.println("최종 우승자: "); + public static void printWinner(ArrayList winners) { + System.out.print("최종 우승자: "); + for (String winner : winners) { + System.out.print(winner + " "); + } + System.out.println(); } } From 2138e02fc0e8920079d13e41f481abfce08d3153 Mon Sep 17 00:00:00 2001 From: legendary_octopus Date: Sat, 7 Sep 2024 15:05:49 +0900 Subject: [PATCH 04/20] =?UTF-8?q?Design=20:=20=EB=AC=B8=EC=9E=90=EC=97=B4?= =?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/model/Car.java | 4 ++-- src/main/java/racingcar/view/ResultView.java | 10 ++++++---- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/main/java/racingcar/model/Car.java b/src/main/java/racingcar/model/Car.java index 85ca890..6bff3a6 100644 --- a/src/main/java/racingcar/model/Car.java +++ b/src/main/java/racingcar/model/Car.java @@ -11,7 +11,7 @@ public Car(String name){ // 라운드 결과 출력 public void printRoundResult(){ - System.out.print(name + " : "); + System.out.print(name.trim() + " : "); for(int i = 0; i < position; i++){ System.out.print("-"); } @@ -31,6 +31,6 @@ public int getPosition(){ } public String getName() { - return name; + return name.replace(" ", ""); } } diff --git a/src/main/java/racingcar/view/ResultView.java b/src/main/java/racingcar/view/ResultView.java index ff11f0b..ca2a5bf 100644 --- a/src/main/java/racingcar/view/ResultView.java +++ b/src/main/java/racingcar/view/ResultView.java @@ -11,10 +11,12 @@ public static void printResult() { // 최종 우승자를 출력한다. public static void printWinner(ArrayList winners) { - System.out.print("최종 우승자: "); - for (String winner : winners) { - System.out.print(winner + " "); + System.out.print("최종 우승자 : "); + for (int i = 0; i < winners.size(); i++) { + System.out.print(winners.get(i)); + if (i != winners.size() - 1) { + System.out.print(", "); + } } - System.out.println(); } } From ca2e608521b22d56a1e34d5a8459cc747d8ef50a Mon Sep 17 00:00:00 2001 From: legendary_octopus Date: Sat, 7 Sep 2024 15:12:54 +0900 Subject: [PATCH 05/20] =?UTF-8?q?Update=20:=20=EC=9A=B0=ED=85=8C=EC=BD=94?= =?UTF-8?q?=20=EC=A0=9C=EA=B3=B5=20=ED=95=A8=EC=88=98=EB=A1=9C=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/model/RandomNumber.java | 3 ++- src/main/java/racingcar/view/InputView.java | 7 +++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/racingcar/model/RandomNumber.java b/src/main/java/racingcar/model/RandomNumber.java index 6d0b2c2..b238329 100644 --- a/src/main/java/racingcar/model/RandomNumber.java +++ b/src/main/java/racingcar/model/RandomNumber.java @@ -1,10 +1,11 @@ package racingcar.model; +import camp.nextstep.edu.missionutils.Randoms; public class RandomNumber { private static final int MAX_NUMBER = 10; private static final int MIN_NUMBER = 0; public static int getRandomNumber() { - return (int) (Math.random() * (MAX_NUMBER - MIN_NUMBER + 1)) + MIN_NUMBER; + return Randoms.pickNumberInRange(0,9); } } diff --git a/src/main/java/racingcar/view/InputView.java b/src/main/java/racingcar/view/InputView.java index 2c2af17..c9f7065 100644 --- a/src/main/java/racingcar/view/InputView.java +++ b/src/main/java/racingcar/view/InputView.java @@ -1,19 +1,18 @@ package racingcar.view; import java.util.Scanner; +import camp.nextstep.edu.missionutils.Console; public class InputView { // 자동차의 이름을 입력받는다. public static String carNameInput() { - Scanner scanner = new Scanner(System.in); System.out.println("경주할 자동차 이름을 입력하세요.(이름은 쉼표(,) 기준으로 구분)"); - return scanner.nextLine(); + return Console.readLine(); } // 시도할 회수를 입력받는다. public static int tryCountInput() { - Scanner scanner = new Scanner(System.in); System.out.println("시도할 회수는 몇회인가요?"); - return scanner.nextInt(); + return Integer.parseInt(Console.readLine()); } } From 1d1613569e4022273bf06b35f25f9924442ede31 Mon Sep 17 00:00:00 2001 From: legendary_octopus Date: Sat, 7 Sep 2024 15:17:46 +0900 Subject: [PATCH 06/20] =?UTF-8?q?Update=20:=20=EB=B6=88=ED=95=84=EC=9A=94?= =?UTF-8?q?=ED=95=9C=20=EB=B3=80=EC=88=98=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/model/RandomNumber.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/main/java/racingcar/model/RandomNumber.java b/src/main/java/racingcar/model/RandomNumber.java index b238329..03f7ef4 100644 --- a/src/main/java/racingcar/model/RandomNumber.java +++ b/src/main/java/racingcar/model/RandomNumber.java @@ -2,9 +2,6 @@ import camp.nextstep.edu.missionutils.Randoms; public class RandomNumber { - private static final int MAX_NUMBER = 10; - private static final int MIN_NUMBER = 0; - public static int getRandomNumber() { return Randoms.pickNumberInRange(0,9); } From 3caef0595b7bdd36b58704b41b74888befe1c1c7 Mon Sep 17 00:00:00 2001 From: legendary_octopus Date: Sat, 7 Sep 2024 15:27:38 +0900 Subject: [PATCH 07/20] =?UTF-8?q?Update=20:=20=EB=B6=88=ED=95=84=EC=9A=94?= =?UTF-8?q?=ED=95=9C=20=EB=B3=80=EC=88=98=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/model/NameValid.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/java/racingcar/model/NameValid.java b/src/main/java/racingcar/model/NameValid.java index 7aa69d0..05dfbf4 100644 --- a/src/main/java/racingcar/model/NameValid.java +++ b/src/main/java/racingcar/model/NameValid.java @@ -4,7 +4,6 @@ import java.util.Arrays; public class NameValid { - final String carName; final ArrayList names; public static ArrayList toArrayList(String carsString) { @@ -14,7 +13,6 @@ public static ArrayList toArrayList(String carsString) { } public NameValid(String carName) { - this.carName = carName; this.names = toArrayList(carName); isValid(); } From d55a56bd10558af7fe67962a09cfc854da78885f Mon Sep 17 00:00:00 2001 From: legendary_octopus Date: Sat, 7 Sep 2024 15:36:13 +0900 Subject: [PATCH 08/20] =?UTF-8?q?Update=20:=20=EC=9E=90=EB=A3=8C=ED=98=95?= =?UTF-8?q?=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/controller/InputController.java | 2 +- src/main/java/racingcar/view/InputView.java | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/main/java/racingcar/controller/InputController.java b/src/main/java/racingcar/controller/InputController.java index 3a797a8..b64cd16 100644 --- a/src/main/java/racingcar/controller/InputController.java +++ b/src/main/java/racingcar/controller/InputController.java @@ -18,7 +18,7 @@ public static RacingCar createRacingCar() { public static int setRoundNum() { try { - NumberVaild validation = new NumberVaild(InputView.tryCountInput()); + NumberVaild validation = new NumberVaild(Integer.parseInt(InputView.tryCountInput())); return validation.getNumber(); } catch (IllegalArgumentException e) { return setRoundNum(); diff --git a/src/main/java/racingcar/view/InputView.java b/src/main/java/racingcar/view/InputView.java index c9f7065..a6caf12 100644 --- a/src/main/java/racingcar/view/InputView.java +++ b/src/main/java/racingcar/view/InputView.java @@ -1,5 +1,4 @@ package racingcar.view; -import java.util.Scanner; import camp.nextstep.edu.missionutils.Console; public class InputView { @@ -11,8 +10,8 @@ public static String carNameInput() { } // 시도할 회수를 입력받는다. - public static int tryCountInput() { + public static String tryCountInput() { System.out.println("시도할 회수는 몇회인가요?"); - return Integer.parseInt(Console.readLine()); + return Console.readLine(); } } From a90bd7e085d5789231e1b51a746c5774366b0d79 Mon Sep 17 00:00:00 2001 From: legendary_octopus Date: Sat, 7 Sep 2024 16:09:09 +0900 Subject: [PATCH 09/20] =?UTF-8?q?Update=20:=20=EB=B6=88=ED=95=84=EC=9A=94?= =?UTF-8?q?=ED=95=9C=20=EC=BD=94=EB=93=9C=20=EC=82=AD=EC=A0=9C?= 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/model/NumberVaild.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index 1c19f73..d7cac46 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -1,21 +1,21 @@ package racingcar; +import racingcar.model.NumberVaild; import racingcar.model.RacingCar; import static racingcar.controller.InputController.createRacingCar; import static racingcar.controller.InputController.setRoundNum; -import static racingcar.view.InputView.carNameInput; import static racingcar.view.ResultView.printResult; public class Application { public static void main(String[] args) { // TODO: 프로그램 구현 - createRacingCar(); startGame(); } // 게임 시작 public static void startGame() { + createRacingCar(); int round = setRoundNum(); System.out.println(); printResult(); diff --git a/src/main/java/racingcar/model/NumberVaild.java b/src/main/java/racingcar/model/NumberVaild.java index 6b49436..54523ea 100644 --- a/src/main/java/racingcar/model/NumberVaild.java +++ b/src/main/java/racingcar/model/NumberVaild.java @@ -1,7 +1,7 @@ package racingcar.model; public class NumberVaild { - private final int number; + private static int number = 0; public NumberVaild(int number) { this.number = number; From 736e045cb9eff0546f4e2dced2a322a6ebdbd262 Mon Sep 17 00:00:00 2001 From: legendary_octopus Date: Sat, 7 Sep 2024 17:29:08 +0900 Subject: [PATCH 10/20] =?UTF-8?q?Fix=20:=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20?= =?UTF-8?q?=ED=86=B5=EA=B3=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/Application.java | 17 +++++++------- .../racingcar/controller/InputController.java | 23 +++++++------------ src/main/java/racingcar/model/NameValid.java | 2 +- src/main/java/racingcar/model/RacingCar.java | 7 +++--- src/main/java/racingcar/view/InputView.java | 4 ++-- src/main/java/racingcar/view/ResultView.java | 4 ++-- 6 files changed, 26 insertions(+), 31 deletions(-) diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index d7cac46..02c60a2 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -1,13 +1,15 @@ package racingcar; +import racingcar.controller.InputController; import racingcar.model.NumberVaild; import racingcar.model.RacingCar; - -import static racingcar.controller.InputController.createRacingCar; -import static racingcar.controller.InputController.setRoundNum; -import static racingcar.view.ResultView.printResult; +import racingcar.view.InputView; +import racingcar.view.ResultView; public class Application { + + static ResultView resultView = new ResultView(); + static InputController inputController = new InputController(); public static void main(String[] args) { // TODO: 프로그램 구현 startGame(); @@ -15,10 +17,9 @@ public static void main(String[] args) { // 게임 시작 public static void startGame() { - createRacingCar(); - int round = setRoundNum(); - System.out.println(); - printResult(); + inputController.createRacingCar(); + int round = inputController.setRoundNum(); + resultView.printResult(); for (int i = 0; i < round; i++) { RacingCar.moveCars(); System.out.println(); diff --git a/src/main/java/racingcar/controller/InputController.java b/src/main/java/racingcar/controller/InputController.java index b64cd16..661d969 100644 --- a/src/main/java/racingcar/controller/InputController.java +++ b/src/main/java/racingcar/controller/InputController.java @@ -3,25 +3,18 @@ import racingcar.model.NumberVaild; import racingcar.model.RacingCar; import racingcar.view.InputView; -import static racingcar.view.InputView.carNameInput; public class InputController { + + InputView inputView = new InputView(); // 레이싱 자동차를 생성한다. - public static RacingCar createRacingCar() { - try{ - NameValid nameValid = new NameValid(carNameInput()); - return new RacingCar(nameValid.getNames()); - }catch (IllegalArgumentException e){ - return createRacingCar(); - } + public RacingCar createRacingCar() { + NameValid nameValid = new NameValid(inputView.carNameInput()); + return new RacingCar(nameValid.getNames()); } - public static int setRoundNum() { - try { - NumberVaild validation = new NumberVaild(Integer.parseInt(InputView.tryCountInput())); - return validation.getNumber(); - } catch (IllegalArgumentException e) { - return setRoundNum(); - } + public int setRoundNum() { + NumberVaild validation = new NumberVaild(Integer.parseInt(inputView.tryCountInput())); + return validation.getNumber(); } } diff --git a/src/main/java/racingcar/model/NameValid.java b/src/main/java/racingcar/model/NameValid.java index 05dfbf4..2b877f0 100644 --- a/src/main/java/racingcar/model/NameValid.java +++ b/src/main/java/racingcar/model/NameValid.java @@ -6,7 +6,7 @@ public class NameValid { final ArrayList names; - public static ArrayList toArrayList(String carsString) { + public ArrayList toArrayList(String carsString) { String[] carNames = carsString.trim().split(","); ArrayList names = new ArrayList<>(Arrays.asList(carNames)); return names; diff --git a/src/main/java/racingcar/model/RacingCar.java b/src/main/java/racingcar/model/RacingCar.java index 5eba1f7..a9749ec 100644 --- a/src/main/java/racingcar/model/RacingCar.java +++ b/src/main/java/racingcar/model/RacingCar.java @@ -1,11 +1,12 @@ package racingcar.model; -import java.util.ArrayList; +import racingcar.view.ResultView; -import static racingcar.view.ResultView.printWinner; +import java.util.ArrayList; public class RacingCar { private static final ArrayList cars = new ArrayList<>(); + static ResultView resultView = new ResultView(); public RacingCar(ArrayList cars) { for (String car : cars) { @@ -33,6 +34,6 @@ public static void getWinners() { winners.add(car.getName()); } } - printWinner(winners); + resultView.printWinner(winners); } } diff --git a/src/main/java/racingcar/view/InputView.java b/src/main/java/racingcar/view/InputView.java index a6caf12..43e27f9 100644 --- a/src/main/java/racingcar/view/InputView.java +++ b/src/main/java/racingcar/view/InputView.java @@ -4,13 +4,13 @@ public class InputView { // 자동차의 이름을 입력받는다. - public static String carNameInput() { + public String carNameInput() { System.out.println("경주할 자동차 이름을 입력하세요.(이름은 쉼표(,) 기준으로 구분)"); return Console.readLine(); } // 시도할 회수를 입력받는다. - public static String tryCountInput() { + public String tryCountInput() { System.out.println("시도할 회수는 몇회인가요?"); return Console.readLine(); } diff --git a/src/main/java/racingcar/view/ResultView.java b/src/main/java/racingcar/view/ResultView.java index ca2a5bf..2598b48 100644 --- a/src/main/java/racingcar/view/ResultView.java +++ b/src/main/java/racingcar/view/ResultView.java @@ -5,12 +5,12 @@ public class ResultView { // 경주 결과를 출력한다. - public static void printResult() { + public void printResult() { System.out.println("실행 결과"); } // 최종 우승자를 출력한다. - public static void printWinner(ArrayList winners) { + public void printWinner(ArrayList winners) { System.out.print("최종 우승자 : "); for (int i = 0; i < winners.size(); i++) { System.out.print(winners.get(i)); From fd27de678cabe4bc45252f625363d5cf45e30734 Mon Sep 17 00:00:00 2001 From: legendary_octopus Date: Sat, 7 Sep 2024 17:39:57 +0900 Subject: [PATCH 11/20] =?UTF-8?q?Refact=20:=20=EB=9D=BC=EC=9A=B4=EB=93=9C?= =?UTF-8?q?=20=EA=B2=B0=EA=B3=BC=20=EC=B6=9C=EB=A0=A5=EC=9D=84=20ResultVie?= =?UTF-8?q?w=EB=A1=9C=20=EB=84=98=EA=B9=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/Application.java | 11 +++-------- .../java/racingcar/controller/InputController.java | 10 ++++------ src/main/java/racingcar/model/Car.java | 11 +---------- src/main/java/racingcar/model/RacingCar.java | 5 ++--- src/main/java/racingcar/view/InputView.java | 4 ++-- src/main/java/racingcar/view/ResultView.java | 13 +++++++++++-- 6 files changed, 23 insertions(+), 31 deletions(-) diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index 02c60a2..8efdb97 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -1,15 +1,10 @@ package racingcar; import racingcar.controller.InputController; -import racingcar.model.NumberVaild; import racingcar.model.RacingCar; -import racingcar.view.InputView; import racingcar.view.ResultView; public class Application { - - static ResultView resultView = new ResultView(); - static InputController inputController = new InputController(); public static void main(String[] args) { // TODO: 프로그램 구현 startGame(); @@ -17,9 +12,9 @@ public static void main(String[] args) { // 게임 시작 public static void startGame() { - inputController.createRacingCar(); - int round = inputController.setRoundNum(); - resultView.printResult(); + InputController.createRacingCar(); + int round = InputController.setRoundNum(); + ResultView.printResult(); for (int i = 0; i < round; i++) { RacingCar.moveCars(); System.out.println(); diff --git a/src/main/java/racingcar/controller/InputController.java b/src/main/java/racingcar/controller/InputController.java index 661d969..c9b2662 100644 --- a/src/main/java/racingcar/controller/InputController.java +++ b/src/main/java/racingcar/controller/InputController.java @@ -5,16 +5,14 @@ import racingcar.view.InputView; public class InputController { - - InputView inputView = new InputView(); // 레이싱 자동차를 생성한다. - public RacingCar createRacingCar() { - NameValid nameValid = new NameValid(inputView.carNameInput()); + public static RacingCar createRacingCar() { + NameValid nameValid = new NameValid(InputView.carNameInput()); return new RacingCar(nameValid.getNames()); } - public int setRoundNum() { - NumberVaild validation = new NumberVaild(Integer.parseInt(inputView.tryCountInput())); + public static int setRoundNum() { + NumberVaild validation = new NumberVaild(Integer.parseInt(InputView.tryCountInput())); return validation.getNumber(); } } diff --git a/src/main/java/racingcar/model/Car.java b/src/main/java/racingcar/model/Car.java index 6bff3a6..cca4b5a 100644 --- a/src/main/java/racingcar/model/Car.java +++ b/src/main/java/racingcar/model/Car.java @@ -1,7 +1,7 @@ package racingcar.model; public class Car{ - private String name; + private final String name; private int position; public Car(String name){ @@ -9,15 +9,6 @@ public Car(String name){ this.position = 0; } - // 라운드 결과 출력 - public void printRoundResult(){ - System.out.print(name.trim() + " : "); - for(int i = 0; i < position; i++){ - System.out.print("-"); - } - System.out.println(); - } - public void move(){ // 랜덤 값이 4 이상이면 전진한다. if(RandomNumber.getRandomNumber() >= 4){ diff --git a/src/main/java/racingcar/model/RacingCar.java b/src/main/java/racingcar/model/RacingCar.java index a9749ec..199d46d 100644 --- a/src/main/java/racingcar/model/RacingCar.java +++ b/src/main/java/racingcar/model/RacingCar.java @@ -6,7 +6,6 @@ public class RacingCar { private static final ArrayList cars = new ArrayList<>(); - static ResultView resultView = new ResultView(); public RacingCar(ArrayList cars) { for (String car : cars) { @@ -18,7 +17,7 @@ public RacingCar(ArrayList cars) { public static void moveCars() { for (Car car : cars) { car.move(); - car.printRoundResult(); + ResultView.printRoundResult(car.getName(), car.getPosition()); } } @@ -34,6 +33,6 @@ public static void getWinners() { winners.add(car.getName()); } } - resultView.printWinner(winners); + ResultView.printWinner(winners); } } diff --git a/src/main/java/racingcar/view/InputView.java b/src/main/java/racingcar/view/InputView.java index 43e27f9..a6caf12 100644 --- a/src/main/java/racingcar/view/InputView.java +++ b/src/main/java/racingcar/view/InputView.java @@ -4,13 +4,13 @@ public class InputView { // 자동차의 이름을 입력받는다. - public String carNameInput() { + public static String carNameInput() { System.out.println("경주할 자동차 이름을 입력하세요.(이름은 쉼표(,) 기준으로 구분)"); return Console.readLine(); } // 시도할 회수를 입력받는다. - public String tryCountInput() { + public static String tryCountInput() { System.out.println("시도할 회수는 몇회인가요?"); return Console.readLine(); } diff --git a/src/main/java/racingcar/view/ResultView.java b/src/main/java/racingcar/view/ResultView.java index 2598b48..c979191 100644 --- a/src/main/java/racingcar/view/ResultView.java +++ b/src/main/java/racingcar/view/ResultView.java @@ -5,12 +5,21 @@ public class ResultView { // 경주 결과를 출력한다. - public void printResult() { + public static void printResult() { System.out.println("실행 결과"); } + // 라운드 결과 출력 + public static void printRoundResult(String name, int position) { + System.out.print(name + " : "); + for (int i = 0; i < position; i++) { + System.out.print("-"); + } + System.out.println(); + } + // 최종 우승자를 출력한다. - public void printWinner(ArrayList winners) { + public static void printWinner(ArrayList winners) { System.out.print("최종 우승자 : "); for (int i = 0; i < winners.size(); i++) { System.out.print(winners.get(i)); From 2b0a3bf6a450d1d6cccb57ba0c7dd13e05097610 Mon Sep 17 00:00:00 2001 From: legendary_octopus Date: Sat, 7 Sep 2024 18:06:49 +0900 Subject: [PATCH 12/20] =?UTF-8?q?Refact=20:=20=EC=B5=9C=EB=8C=80=EA=B0=92?= =?UTF-8?q?=20=EA=B5=AC=ED=95=98=EA=B8=B0=20=ED=95=A8=EC=88=98=EB=A1=9C=20?= =?UTF-8?q?=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/model/RacingCar.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/main/java/racingcar/model/RacingCar.java b/src/main/java/racingcar/model/RacingCar.java index 199d46d..2157d97 100644 --- a/src/main/java/racingcar/model/RacingCar.java +++ b/src/main/java/racingcar/model/RacingCar.java @@ -25,9 +25,7 @@ public static void moveCars() { public static void getWinners() { ArrayList winners = new ArrayList<>(); int maxPosition = 0; - for (Car car : cars) { - maxPosition = Math.max(maxPosition, car.getPosition()); - } + maxPosition = getMaxPosition(); for (Car car : cars) { if (car.getPosition() == maxPosition) { winners.add(car.getName()); @@ -35,4 +33,13 @@ public static void getWinners() { } ResultView.printWinner(winners); } + + // 최대 이동값 + private static int getMaxPosition() { + int maxPosition = 0; + for (Car car : cars) { + maxPosition = Math.max(maxPosition, car.getPosition()); + } + return maxPosition; + } } From 568dd523c4546cebef3d3343b3c870fa1ff45a0a Mon Sep 17 00:00:00 2001 From: legendary_octopus Date: Sat, 7 Sep 2024 18:12:09 +0900 Subject: [PATCH 13/20] =?UTF-8?q?Refact=20:=20static=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/Application.java | 1 + src/main/java/racingcar/controller/InputController.java | 4 ++-- src/main/java/racingcar/model/Car.java | 4 +++- src/main/java/racingcar/model/RacingCar.java | 2 +- src/main/java/racingcar/model/RandomNumber.java | 2 +- 5 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index 8efdb97..c17d422 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -5,6 +5,7 @@ import racingcar.view.ResultView; public class Application { + public static void main(String[] args) { // TODO: 프로그램 구현 startGame(); diff --git a/src/main/java/racingcar/controller/InputController.java b/src/main/java/racingcar/controller/InputController.java index c9b2662..6e6194d 100644 --- a/src/main/java/racingcar/controller/InputController.java +++ b/src/main/java/racingcar/controller/InputController.java @@ -6,9 +6,9 @@ public class InputController { // 레이싱 자동차를 생성한다. - public static RacingCar createRacingCar() { + public static void createRacingCar() { NameValid nameValid = new NameValid(InputView.carNameInput()); - return new RacingCar(nameValid.getNames()); + new RacingCar(nameValid.getNames()); } public static int setRoundNum() { diff --git a/src/main/java/racingcar/model/Car.java b/src/main/java/racingcar/model/Car.java index cca4b5a..ea13ba5 100644 --- a/src/main/java/racingcar/model/Car.java +++ b/src/main/java/racingcar/model/Car.java @@ -1,6 +1,8 @@ package racingcar.model; public class Car{ + + RandomNumber randomNumber = new RandomNumber(); private final String name; private int position; @@ -11,7 +13,7 @@ public Car(String name){ public void move(){ // 랜덤 값이 4 이상이면 전진한다. - if(RandomNumber.getRandomNumber() >= 4){ + if(randomNumber.getRandomNumber() >= 4){ position++; } } diff --git a/src/main/java/racingcar/model/RacingCar.java b/src/main/java/racingcar/model/RacingCar.java index 2157d97..5b13694 100644 --- a/src/main/java/racingcar/model/RacingCar.java +++ b/src/main/java/racingcar/model/RacingCar.java @@ -35,7 +35,7 @@ public static void getWinners() { } // 최대 이동값 - private static int getMaxPosition() { + public static int getMaxPosition() { int maxPosition = 0; for (Car car : cars) { maxPosition = Math.max(maxPosition, car.getPosition()); diff --git a/src/main/java/racingcar/model/RandomNumber.java b/src/main/java/racingcar/model/RandomNumber.java index 03f7ef4..da3d432 100644 --- a/src/main/java/racingcar/model/RandomNumber.java +++ b/src/main/java/racingcar/model/RandomNumber.java @@ -2,7 +2,7 @@ import camp.nextstep.edu.missionutils.Randoms; public class RandomNumber { - public static int getRandomNumber() { + public int getRandomNumber() { return Randoms.pickNumberInRange(0,9); } } From 64f8dc5a962f7415777ebefce4c419a4b153c73f Mon Sep 17 00:00:00 2001 From: legendary_octopus Date: Sat, 7 Sep 2024 18:14:35 +0900 Subject: [PATCH 14/20] =?UTF-8?q?Refact=20:=20=EA=B0=80=EB=8F=85=EC=84=B1?= =?UTF-8?q?=20=ED=96=A5=EC=83=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/model/NameValid.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/racingcar/model/NameValid.java b/src/main/java/racingcar/model/NameValid.java index 2b877f0..0ef3150 100644 --- a/src/main/java/racingcar/model/NameValid.java +++ b/src/main/java/racingcar/model/NameValid.java @@ -8,8 +8,7 @@ public class NameValid { public ArrayList toArrayList(String carsString) { String[] carNames = carsString.trim().split(","); - ArrayList names = new ArrayList<>(Arrays.asList(carNames)); - return names; + return new ArrayList<>(Arrays.asList(carNames)); } public NameValid(String carName) { From 7b8b87c8bfebb25b2e397bddcb7e3f53906e4f6d Mon Sep 17 00:00:00 2001 From: legendary_octopus Date: Sat, 7 Sep 2024 18:18:39 +0900 Subject: [PATCH 15/20] =?UTF-8?q?Docs=20:=20=EA=B8=B0=EB=8A=A5=20=EB=AA=85?= =?UTF-8?q?=EC=84=B8=EC=84=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/README.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/docs/README.md b/docs/README.md index fed03fe..cef8ada 100644 --- a/docs/README.md +++ b/docs/README.md @@ -3,11 +3,10 @@ - 자동차 이름 입력받기 - 자동차 이름이 5자 이하인 경우에만 입력받기 - 자동차 이름에 쉼표(,)로 구분된 이름이 1개 이상인 경우에만 입력받기 - - 자동차 이름에 특수문자 또는 숫자가 포함되어 있지 않은 경우에만 입력받기 - 같은 이름의 자동차가 존재하지 않는 경우에만 입력받기 - 자동차 이름 저장하기 - 자동차 이름을 쉼표(,)로 구분하여 저장하기 -- 예외 발생 시 처음부터 실행 +- 예외 발생 시 에러 던지고 종료 ### 2. 시도할 회수를 입력받기 위한 화면을 구성한다. - 시도할 회수 입력받기 @@ -16,7 +15,7 @@ - 시도할 회수 저장하기 - 시도할 회수를 저장하기 - 정수로 저장하기 -- 예외 발생 시 처음부터 실행 +- 예외 발생 시 에러 던지고 종료 ### 3. 자동차 경주를 진행한다. - 시도할 회수를 입력 받은 대로 자동차를 전진시킨다. @@ -24,4 +23,7 @@ ### 4. 경주 결과를 출력한다. - 경주 결과를 출력한다. -- 우승자를 출력한다. \ No newline at end of file +- 우승자를 출력한다. + +### 5. 경주 게임을 종료한다. +- 경주 게임을 종료한다. \ No newline at end of file From 8ff5c395511952f3f4eddb569de8955f42b71171 Mon Sep 17 00:00:00 2001 From: legendary_octopus Date: Sat, 7 Sep 2024 18:23:55 +0900 Subject: [PATCH 16/20] =?UTF-8?q?Refact=20:=20=EA=B0=80=EB=8F=85=EC=84=B1?= =?UTF-8?q?=20=ED=96=A5=EC=83=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/model/NumberVaild.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/racingcar/model/NumberVaild.java b/src/main/java/racingcar/model/NumberVaild.java index 54523ea..30bea52 100644 --- a/src/main/java/racingcar/model/NumberVaild.java +++ b/src/main/java/racingcar/model/NumberVaild.java @@ -4,7 +4,7 @@ public class NumberVaild { private static int number = 0; public NumberVaild(int number) { - this.number = number; + NumberVaild.number = number; isValid(); } From 1db440633e469e0da2b5e97a77102ce68621878c Mon Sep 17 00:00:00 2001 From: legendary_octopus Date: Sat, 7 Sep 2024 18:46:43 +0900 Subject: [PATCH 17/20] =?UTF-8?q?Refact=20:=20=EA=B0=80=EB=8F=85=EC=84=B1?= =?UTF-8?q?=20=ED=96=A5=EC=83=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/model/Car.java | 4 +--- src/main/java/racingcar/model/RandomNumber.java | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/main/java/racingcar/model/Car.java b/src/main/java/racingcar/model/Car.java index ea13ba5..cca4b5a 100644 --- a/src/main/java/racingcar/model/Car.java +++ b/src/main/java/racingcar/model/Car.java @@ -1,8 +1,6 @@ package racingcar.model; public class Car{ - - RandomNumber randomNumber = new RandomNumber(); private final String name; private int position; @@ -13,7 +11,7 @@ public Car(String name){ public void move(){ // 랜덤 값이 4 이상이면 전진한다. - if(randomNumber.getRandomNumber() >= 4){ + if(RandomNumber.getRandomNumber() >= 4){ position++; } } diff --git a/src/main/java/racingcar/model/RandomNumber.java b/src/main/java/racingcar/model/RandomNumber.java index da3d432..03f7ef4 100644 --- a/src/main/java/racingcar/model/RandomNumber.java +++ b/src/main/java/racingcar/model/RandomNumber.java @@ -2,7 +2,7 @@ import camp.nextstep.edu.missionutils.Randoms; public class RandomNumber { - public int getRandomNumber() { + public static int getRandomNumber() { return Randoms.pickNumberInRange(0,9); } } From 73f63481ddd54bbf5cb9c0159abbc3cfae276bf5 Mon Sep 17 00:00:00 2001 From: legendary_octopus Date: Sat, 7 Sep 2024 18:48:38 +0900 Subject: [PATCH 18/20] =?UTF-8?q?Docs=20:=20=EA=BF=80=ED=8C=81=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/model/Car.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/racingcar/model/Car.java b/src/main/java/racingcar/model/Car.java index cca4b5a..d6fddfa 100644 --- a/src/main/java/racingcar/model/Car.java +++ b/src/main/java/racingcar/model/Car.java @@ -10,6 +10,7 @@ public Car(String name){ } public void move(){ + // 매개변수로 랜덤 값을 주면 테스트하기 좋아진다. // 랜덤 값이 4 이상이면 전진한다. if(RandomNumber.getRandomNumber() >= 4){ position++; From 43e48bc93a04172ddd57b80b5514e4c12b93cb91 Mon Sep 17 00:00:00 2001 From: legendary_octopus Date: Sat, 7 Sep 2024 19:08:58 +0900 Subject: [PATCH 19/20] =?UTF-8?q?Refact=20:=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EA=B0=84=EA=B2=B0=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/model/RacingCar.java | 3 +-- src/main/java/racingcar/view/ResultView.java | 4 +--- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/src/main/java/racingcar/model/RacingCar.java b/src/main/java/racingcar/model/RacingCar.java index 5b13694..cc5a202 100644 --- a/src/main/java/racingcar/model/RacingCar.java +++ b/src/main/java/racingcar/model/RacingCar.java @@ -24,8 +24,7 @@ public static void moveCars() { // 우승자를 반환한다. public static void getWinners() { ArrayList winners = new ArrayList<>(); - int maxPosition = 0; - maxPosition = getMaxPosition(); + int maxPosition = getMaxPosition(); for (Car car : cars) { if (car.getPosition() == maxPosition) { winners.add(car.getName()); diff --git a/src/main/java/racingcar/view/ResultView.java b/src/main/java/racingcar/view/ResultView.java index c979191..14bef12 100644 --- a/src/main/java/racingcar/view/ResultView.java +++ b/src/main/java/racingcar/view/ResultView.java @@ -12,9 +12,7 @@ public static void printResult() { // 라운드 결과 출력 public static void printRoundResult(String name, int position) { System.out.print(name + " : "); - for (int i = 0; i < position; i++) { - System.out.print("-"); - } + System.out.print("-".repeat(position)); System.out.println(); } From 624eb2576eb40d1f9692a74d470fe6bcc25afa48 Mon Sep 17 00:00:00 2001 From: legendary_octopus Date: Sat, 7 Sep 2024 19:43:26 +0900 Subject: [PATCH 20/20] =?UTF-8?q?Refact=20:=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=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/model/RacingCar.java | 2 +- src/main/java/racingcar/view/InputView.java | 3 +++ src/main/java/racingcar/view/ResultView.java | 3 +++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/main/java/racingcar/model/RacingCar.java b/src/main/java/racingcar/model/RacingCar.java index cc5a202..bcec40f 100644 --- a/src/main/java/racingcar/model/RacingCar.java +++ b/src/main/java/racingcar/model/RacingCar.java @@ -34,7 +34,7 @@ public static void getWinners() { } // 최대 이동값 - public static int getMaxPosition() { + private static int getMaxPosition() { int maxPosition = 0; for (Car car : cars) { maxPosition = Math.max(maxPosition, car.getPosition()); diff --git a/src/main/java/racingcar/view/InputView.java b/src/main/java/racingcar/view/InputView.java index a6caf12..36b881c 100644 --- a/src/main/java/racingcar/view/InputView.java +++ b/src/main/java/racingcar/view/InputView.java @@ -3,6 +3,9 @@ public class InputView { + private InputView() { + } + // 자동차의 이름을 입력받는다. public static String carNameInput() { System.out.println("경주할 자동차 이름을 입력하세요.(이름은 쉼표(,) 기준으로 구분)"); diff --git a/src/main/java/racingcar/view/ResultView.java b/src/main/java/racingcar/view/ResultView.java index 14bef12..94f92aa 100644 --- a/src/main/java/racingcar/view/ResultView.java +++ b/src/main/java/racingcar/view/ResultView.java @@ -4,6 +4,9 @@ public class ResultView { + private ResultView() { + } + // 경주 결과를 출력한다. public static void printResult() { System.out.println("실행 결과");