From fecd62fcfae5b1d9926120661ab9a4f0eccafe17 Mon Sep 17 00:00:00 2001 From: manopickax Date: Sun, 29 Mar 2026 23:23:56 +0900 Subject: [PATCH 1/9] =?UTF-8?q?feat:=20Car=20=ED=81=B4=EB=9E=98=EC=8A=A4?= =?UTF-8?q?=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80=20=EB=B0=8F=20?= =?UTF-8?q?=EC=9D=B4=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 | 42 +++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index a17a52e..8fefdb4 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -1,7 +1,47 @@ package racingcar; +import camp.nextstep.edu.missionutils.Console; +import camp.nextstep.edu.missionutils.Randoms; + +import java.util.List; +import java.util.ArrayList; public class Application { + public static void main(String[] args) { - // TODO: 프로그램 구현 + List cars = createCars(); + } + + private static List createCars() { + System.out.println("경주할 자동차 이름을 입력하세요.(이름은 쉼표(,) 기준으로 구분)"); + String input = Console.readLine(); + String[] names = input.split(","); + + List cars = new ArrayList<>(); + for (String name : names) { + cars.add(new Car(name.trim())); + } + return cars; + } +} + +class Car { + private final String name; + private int distance = 0; + int randomNumber = Randoms.pickNumberInRange(0, 9); + + public Car (String name) { + validateName(name); + this.name = name; } + private void validateName(String name){ + if (name == null || name.isBlank() || name.length() > 5) { + throw new IllegalArgumentException ("올바른 값을 입력해주세요. (문자열을 입력하세요.)"); + } + } + public void move(int randomNumber) { + if (randomNumber >= 4) { + distance ++; + } + } + } From 57db6ec8c9dcc906c0a1e0cbc0cf498143b19453 Mon Sep 17 00:00:00 2001 From: manopickax Date: Mon, 30 Mar 2026 00:08:56 +0900 Subject: [PATCH 2/9] =?UTF-8?q?feat:=20GameManager=20=ED=81=B4=EB=9E=98?= =?UTF-8?q?=EC=8A=A4=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80=20=EB=B0=8F?= =?UTF-8?q?=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 | 55 +++++++++++++++++------- 1 file changed, 40 insertions(+), 15 deletions(-) diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index 8fefdb4..4f5e98a 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -6,28 +6,15 @@ import java.util.ArrayList; public class Application { - public static void main(String[] args) { - List cars = createCars(); - } - - private static List createCars() { - System.out.println("경주할 자동차 이름을 입력하세요.(이름은 쉼표(,) 기준으로 구분)"); - String input = Console.readLine(); - String[] names = input.split(","); - - List cars = new ArrayList<>(); - for (String name : names) { - cars.add(new Car(name.trim())); - } - return cars; + GameManager gameManager = new GameManager(); + gameManager.start(); } } class Car { private final String name; private int distance = 0; - int randomNumber = Randoms.pickNumberInRange(0, 9); public Car (String name) { validateName(name); @@ -43,5 +30,43 @@ public void move(int randomNumber) { distance ++; } } + public void printStatus() { + System.out.println(name + " : " + " - ".repeat(distance)); + } +} + +class GameManager { + public void start() { + List cars = createCars(); + System.out.println("시도할 회수"); + String inputNum = Console.readLine(); + int attempts = Integer.parseInt(inputNum); + if (attempts <= 0 ) { + throw new IllegalArgumentException ("0이상 입력하세요."); + } + for(int i = 1; i <= attempts; i++){ + int randomNumber = Randoms.pickNumberInRange(0, 9); + for (Car car : cars){ + car.move(randomNumber); + car.printStatus(); + } + System.out.println(" "); + } + + } + private static List createCars() { + System.out.println("경주할 자동차 이름을 입력하세요.(이름은 쉼표(,) 기준으로 구분)"); + String inputName = Console.readLine(); + String[] names = inputName.split(","); + List cars = new ArrayList<>(); + for (String name : names) { + cars.add(new Car(name.trim())); + } + return cars; + } } + +class WinnerPicker { + +} \ No newline at end of file From c2166403156a08c9f3d24c028b7f35c9cfc3c739 Mon Sep 17 00:00:00 2001 From: manopickax Date: Mon, 30 Mar 2026 13:06:39 +0900 Subject: [PATCH 3/9] =?UTF-8?q?feat:=20WinnerPicker=20=ED=81=B4=EB=9E=98?= =?UTF-8?q?=EC=8A=A4=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 | 31 ++++++++++++++++++++---- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index 4f5e98a..95fd484 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -1,7 +1,6 @@ package racingcar; import camp.nextstep.edu.missionutils.Console; import camp.nextstep.edu.missionutils.Randoms; - import java.util.List; import java.util.ArrayList; @@ -33,26 +32,34 @@ public void move(int randomNumber) { public void printStatus() { System.out.println(name + " : " + " - ".repeat(distance)); } + public int getDistance() { + return distance; + } + public String getName() { + return name; + } + } class GameManager { public void start() { List cars = createCars(); - System.out.println("시도할 회수"); + System.out.println("시도할 회수는 몇회인가요?"); String inputNum = Console.readLine(); int attempts = Integer.parseInt(inputNum); if (attempts <= 0 ) { throw new IllegalArgumentException ("0이상 입력하세요."); } for(int i = 1; i <= attempts; i++){ - int randomNumber = Randoms.pickNumberInRange(0, 9); for (Car car : cars){ + int randomNumber = Randoms.pickNumberInRange(0, 9); car.move(randomNumber); car.printStatus(); } System.out.println(" "); } - + WinnerPicker winnerPicker = new WinnerPicker(); + winnerPicker.pirntWinner(cars); } private static List createCars() { System.out.println("경주할 자동차 이름을 입력하세요.(이름은 쉼표(,) 기준으로 구분)"); @@ -68,5 +75,19 @@ private static List createCars() { } class WinnerPicker { - + public void pirntWinner(List cars) { + int maxdistance = 0; + for (Car car : cars) { + if (car.getDistance() > maxdistance) { + maxdistance = car.getDistance(); + } + } + List winnercars = new ArrayList<>(); + for (Car car : cars) { + if (car.getDistance() == maxdistance) { + winnercars.add(car.getName()); + } + } + System.out.println(winnercars); + } } \ No newline at end of file From 052ae1771f9547a105e51532b0a9370b2d46fe60 Mon Sep 17 00:00:00 2001 From: manopickax Date: Mon, 30 Mar 2026 22:14:12 +0900 Subject: [PATCH 4/9] =?UTF-8?q?fix:=20test=20=EC=A0=90=EA=B2=80=20?= =?UTF-8?q?=EB=B0=8F=20=EC=BD=94=EB=93=9C=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/Application.java | 30 +++++++++++++++++------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index 95fd484..821a06d 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -14,37 +14,40 @@ public static void main(String[] args) { class Car { private final String name; private int distance = 0; - public Car (String name) { validateName(name); this.name = name; } + private void validateName(String name){ - if (name == null || name.isBlank() || name.length() > 5) { + if (name == null || name.isBlank() || name.length() > 5 || name.contains(" ")) { throw new IllegalArgumentException ("올바른 값을 입력해주세요. (문자열을 입력하세요.)"); } } + public void move(int randomNumber) { if (randomNumber >= 4) { distance ++; } } + public void printStatus() { - System.out.println(name + " : " + " - ".repeat(distance)); + System.out.println(name + " : " + "-".repeat(distance)); } + public int getDistance() { return distance; } + public String getName() { return name; } - } class GameManager { public void start() { List cars = createCars(); - System.out.println("시도할 회수는 몇회인가요?"); + System.out.println("시도할 회수는 몇 회인가요?"); String inputNum = Console.readLine(); int attempts = Integer.parseInt(inputNum); if (attempts <= 0 ) { @@ -56,19 +59,27 @@ public void start() { car.move(randomNumber); car.printStatus(); } - System.out.println(" "); + System.out.println(); + System.out.println("실행 결과"); } WinnerPicker winnerPicker = new WinnerPicker(); winnerPicker.pirntWinner(cars); } + private static List createCars() { System.out.println("경주할 자동차 이름을 입력하세요.(이름은 쉼표(,) 기준으로 구분)"); String inputName = Console.readLine(); String[] names = inputName.split(","); - List cars = new ArrayList<>(); for (String name : names) { - cars.add(new Car(name.trim())); + cars.add(new Car(name)); + for (int i = 0; i < cars.size(); i++) { + for (int j = i + 1; j < cars.size(); j++) { + if (cars.get(i).getName().equals(cars.get(j).getName())) { + throw new IllegalArgumentException("중복된 값 입니다."); + } + } + } } return cars; } @@ -82,12 +93,13 @@ public void pirntWinner(List cars) { maxdistance = car.getDistance(); } } + List winnercars = new ArrayList<>(); for (Car car : cars) { if (car.getDistance() == maxdistance) { winnercars.add(car.getName()); } } - System.out.println(winnercars); + System.out.println("최종 우승자 : " + String.join(", ", winnercars)); } } \ No newline at end of file From 63242a0aca8762a26138b5da20a82e33880ebc4c Mon Sep 17 00:00:00 2001 From: manopickax Date: Mon, 6 Apr 2026 21:10:58 +0900 Subject: [PATCH 5/9] =?UTF-8?q?refactor:=20=EB=8B=A8=EC=9D=BC=20=EC=B1=85?= =?UTF-8?q?=EC=9E=84=20=EC=9B=90=EC=B9=99=EC=97=90=20=EB=94=B0=EB=9D=BC=20?= =?UTF-8?q?=ED=81=B4=EB=9E=98=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 | 97 ----------------------- src/main/java/racingcar/Car.java | 34 ++++++++ src/main/java/racingcar/CarCreator.java | 26 ++++++ src/main/java/racingcar/GameManager.java | 29 +++++++ src/main/java/racingcar/WinnerPicker.java | 23 ++++++ 5 files changed, 112 insertions(+), 97 deletions(-) create mode 100644 src/main/java/racingcar/Car.java create mode 100644 src/main/java/racingcar/CarCreator.java create mode 100644 src/main/java/racingcar/GameManager.java create mode 100644 src/main/java/racingcar/WinnerPicker.java diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index 821a06d..3c4e87c 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -1,8 +1,4 @@ package racingcar; -import camp.nextstep.edu.missionutils.Console; -import camp.nextstep.edu.missionutils.Randoms; -import java.util.List; -import java.util.ArrayList; public class Application { public static void main(String[] args) { @@ -10,96 +6,3 @@ public static void main(String[] args) { gameManager.start(); } } - -class Car { - private final String name; - private int distance = 0; - public Car (String name) { - validateName(name); - this.name = name; - } - - private void validateName(String name){ - if (name == null || name.isBlank() || name.length() > 5 || name.contains(" ")) { - throw new IllegalArgumentException ("올바른 값을 입력해주세요. (문자열을 입력하세요.)"); - } - } - - public void move(int randomNumber) { - if (randomNumber >= 4) { - distance ++; - } - } - - public void printStatus() { - System.out.println(name + " : " + "-".repeat(distance)); - } - - public int getDistance() { - return distance; - } - - public String getName() { - return name; - } -} - -class GameManager { - public void start() { - List cars = createCars(); - System.out.println("시도할 회수는 몇 회인가요?"); - String inputNum = Console.readLine(); - int attempts = Integer.parseInt(inputNum); - if (attempts <= 0 ) { - throw new IllegalArgumentException ("0이상 입력하세요."); - } - for(int i = 1; i <= attempts; i++){ - for (Car car : cars){ - int randomNumber = Randoms.pickNumberInRange(0, 9); - car.move(randomNumber); - car.printStatus(); - } - System.out.println(); - System.out.println("실행 결과"); - } - WinnerPicker winnerPicker = new WinnerPicker(); - winnerPicker.pirntWinner(cars); - } - - private static List createCars() { - System.out.println("경주할 자동차 이름을 입력하세요.(이름은 쉼표(,) 기준으로 구분)"); - String inputName = Console.readLine(); - String[] names = inputName.split(","); - List cars = new ArrayList<>(); - for (String name : names) { - cars.add(new Car(name)); - for (int i = 0; i < cars.size(); i++) { - for (int j = i + 1; j < cars.size(); j++) { - if (cars.get(i).getName().equals(cars.get(j).getName())) { - throw new IllegalArgumentException("중복된 값 입니다."); - } - } - } - } - return cars; - } -} - -class WinnerPicker { - public void pirntWinner(List cars) { - int maxdistance = 0; - for (Car car : cars) { - if (car.getDistance() > maxdistance) { - maxdistance = car.getDistance(); - } - } - - List winnercars = new ArrayList<>(); - for (Car car : cars) { - if (car.getDistance() == maxdistance) { - winnercars.add(car.getName()); - } - } - System.out.println("최종 우승자 : " + String.join(", ", winnercars)); - } -} \ No newline at end of file diff --git a/src/main/java/racingcar/Car.java b/src/main/java/racingcar/Car.java new file mode 100644 index 0000000..d44fd20 --- /dev/null +++ b/src/main/java/racingcar/Car.java @@ -0,0 +1,34 @@ +package racingcar; + +public class Car { + private final String name; + private int distance = 0; + public Car (String name) { + validateName(name); + this.name = name; + } + + private void validateName(String name){ + if (name == null || name.isBlank() || name.length() > 5 || name.contains(" ")) { + throw new IllegalArgumentException ("올바른 값을 입력해주세요. (문자열을 입력하세요.)"); + } + } + + public void move(int randomNumber) { + if (randomNumber >= 4) { + distance ++; + } + } + + public void printStatus() { + System.out.println(name + " : " + "-".repeat(distance)); + } + + public int getDistance() { + return distance; + } + + public String getName() { + return name; + } +} diff --git a/src/main/java/racingcar/CarCreator.java b/src/main/java/racingcar/CarCreator.java new file mode 100644 index 0000000..cd3f7fd --- /dev/null +++ b/src/main/java/racingcar/CarCreator.java @@ -0,0 +1,26 @@ +package racingcar; + +import camp.nextstep.edu.missionutils.Console; + +import java.util.ArrayList; +import java.util.List; + +public class CarCreator { + public static List createCars() { + System.out.println("경주할 자동차 이름을 입력하세요.(이름은 쉼표(,) 기준으로 구분)"); + String inputName = Console.readLine(); + String[] names = inputName.split(","); + List cars = new ArrayList<>(); + for (String name : names) { + cars.add(new Car(name)); + for (int i = 0; i < cars.size(); i++) { + for (int j = i + 1; j < cars.size(); j++) { + if (cars.get(i).getName().equals(cars.get(j).getName())) { + throw new IllegalArgumentException("중복된 값 입니다."); + } + } + } + } + return cars; + } +} diff --git a/src/main/java/racingcar/GameManager.java b/src/main/java/racingcar/GameManager.java new file mode 100644 index 0000000..d3233ee --- /dev/null +++ b/src/main/java/racingcar/GameManager.java @@ -0,0 +1,29 @@ +package racingcar; + +import camp.nextstep.edu.missionutils.Console; +import camp.nextstep.edu.missionutils.Randoms; +import java.util.List; + +public class GameManager { + public void start() { + List cars = CarCreator.createCars(); + System.out.println("시도할 회수는 몇 회인가요?"); + String inputNum = Console.readLine(); + int attempts = Integer.parseInt(inputNum); + if (attempts <= 0 ) { + throw new IllegalArgumentException ("0이상 입력하세요."); + } + System.out.println(); + System.out.println("실행 결과"); + for(int i = 1; i <= attempts; i++){ + for (Car car : cars){ + int randomNumber = Randoms.pickNumberInRange(0, 9); + car.move(randomNumber); + car.printStatus(); + } + System.out.println(); + } + WinnerPicker winnerPicker = new WinnerPicker(); + winnerPicker.printWinner(cars); + } +} \ No newline at end of file diff --git a/src/main/java/racingcar/WinnerPicker.java b/src/main/java/racingcar/WinnerPicker.java new file mode 100644 index 0000000..ddb4948 --- /dev/null +++ b/src/main/java/racingcar/WinnerPicker.java @@ -0,0 +1,23 @@ +package racingcar; + +import java.util.ArrayList; +import java.util.List; + +public class WinnerPicker { + public void printWinner(List cars) { + int maxdistance = 0; + for (Car car : cars) { + if (car.getDistance() > maxdistance) { + maxdistance = car.getDistance(); + } + } + + List winnercars = new ArrayList<>(); + for (Car car : cars) { + if (car.getDistance() == maxdistance) { + winnercars.add(car.getName()); + } + } + System.out.println("최종 우승자 : " + String.join(", ", winnercars)); + } +} From ca286a3e9b71b465f9d61e2ff91267e2a75f53f5 Mon Sep 17 00:00:00 2001 From: manopickax Date: Mon, 6 Apr 2026 22:00:12 +0900 Subject: [PATCH 6/9] =?UTF-8?q?refactor:=20=EC=A4=91=EB=B3=B5=20=EA=B2=80?= =?UTF-8?q?=EC=82=AC=20=EB=A1=9C=EC=A7=81=EC=9D=84=204=EC=A4=91=20for?= =?UTF-8?q?=EB=AC=B8=EC=97=90=EC=84=9C=20HashSet=EC=9C=BC=EB=A1=9C=20?= =?UTF-8?q?=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/CarCreator.java | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/main/java/racingcar/CarCreator.java b/src/main/java/racingcar/CarCreator.java index cd3f7fd..902c3fc 100644 --- a/src/main/java/racingcar/CarCreator.java +++ b/src/main/java/racingcar/CarCreator.java @@ -1,26 +1,26 @@ package racingcar; - import camp.nextstep.edu.missionutils.Console; - import java.util.ArrayList; +import java.util.HashSet; import java.util.List; +import java.util.Set; public class CarCreator { public static List createCars() { System.out.println("경주할 자동차 이름을 입력하세요.(이름은 쉼표(,) 기준으로 구분)"); String inputName = Console.readLine(); String[] names = inputName.split(","); + + Set nameSet = new HashSet<>(List.of(names)); + if (nameSet.size() != names.length) { + throw new IllegalArgumentException("중복된 값 입니다."); + } + List cars = new ArrayList<>(); for (String name : names) { cars.add(new Car(name)); - for (int i = 0; i < cars.size(); i++) { - for (int j = i + 1; j < cars.size(); j++) { - if (cars.get(i).getName().equals(cars.get(j).getName())) { - throw new IllegalArgumentException("중복된 값 입니다."); - } - } - } } + return cars; } -} +} \ No newline at end of file From 424db3840fe21dff3933116e77599ed68348fb62 Mon Sep 17 00:00:00 2001 From: manopickax Date: Mon, 6 Apr 2026 22:21:50 +0900 Subject: [PATCH 7/9] =?UTF-8?q?refactor:=20SRP=EC=9B=90=EC=B9=99=20?= =?UTF-8?q?=EC=A4=80=EC=88=98=20=EA=B3=A0=EB=A0=A4=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EC=9E=AC=EA=B5=AC=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/AttemptReader.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 src/main/java/racingcar/AttemptReader.java diff --git a/src/main/java/racingcar/AttemptReader.java b/src/main/java/racingcar/AttemptReader.java new file mode 100644 index 0000000..3366f26 --- /dev/null +++ b/src/main/java/racingcar/AttemptReader.java @@ -0,0 +1,15 @@ +package racingcar; + +import camp.nextstep.edu.missionutils.Console; + +public class AttemptReader { + public static int read() { + System.out.println("시도할 회수는 몇 회인가요?"); + String inputNum = Console.readLine(); + int attempts = Integer.parseInt(inputNum); + if (attempts <= 0 ) { + throw new IllegalArgumentException ("0이상 입력하세요."); + } + return attempts; + } +} From 6bdc45d310d18eda46763828314042c983912cf0 Mon Sep 17 00:00:00 2001 From: manopickax Date: Mon, 6 Apr 2026 22:21:58 +0900 Subject: [PATCH 8/9] =?UTF-8?q?refactor:=20SRP=EC=9B=90=EC=B9=99=20?= =?UTF-8?q?=EC=A4=80=EC=88=98=20=EA=B3=A0=EB=A0=A4=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EC=9E=AC=EA=B5=AC=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/GameManager.java | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/src/main/java/racingcar/GameManager.java b/src/main/java/racingcar/GameManager.java index d3233ee..e8d37e3 100644 --- a/src/main/java/racingcar/GameManager.java +++ b/src/main/java/racingcar/GameManager.java @@ -1,18 +1,13 @@ package racingcar; -import camp.nextstep.edu.missionutils.Console; import camp.nextstep.edu.missionutils.Randoms; import java.util.List; public class GameManager { public void start() { List cars = CarCreator.createCars(); - System.out.println("시도할 회수는 몇 회인가요?"); - String inputNum = Console.readLine(); - int attempts = Integer.parseInt(inputNum); - if (attempts <= 0 ) { - throw new IllegalArgumentException ("0이상 입력하세요."); - } + int attempts = AttemptReader.read(); + System.out.println(); System.out.println("실행 결과"); for(int i = 1; i <= attempts; i++){ From ab0cad073076087e83c9d1c155e241cb2c19e8e5 Mon Sep 17 00:00:00 2001 From: manopickax Date: Mon, 6 Apr 2026 22:38:17 +0900 Subject: [PATCH 9/9] =?UTF-8?q?refactor:=20OCP/DIP=EC=9B=90=EC=B9=99=20?= =?UTF-8?q?=EC=A4=80=EC=88=98=20=EA=B3=A0=EB=A0=A4=20Raceable=20=EC=9D=B8?= =?UTF-8?q?=ED=84=B0=ED=8E=98=EC=9D=B4=EC=8A=A4=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/Car.java | 6 +----- src/main/java/racingcar/CarCreator.java | 4 ++-- src/main/java/racingcar/GameManager.java | 6 +++--- src/main/java/racingcar/Raceable.java | 7 +++++++ src/main/java/racingcar/WinnerPicker.java | 6 +++--- 5 files changed, 16 insertions(+), 13 deletions(-) create mode 100644 src/main/java/racingcar/Raceable.java diff --git a/src/main/java/racingcar/Car.java b/src/main/java/racingcar/Car.java index d44fd20..8f4de47 100644 --- a/src/main/java/racingcar/Car.java +++ b/src/main/java/racingcar/Car.java @@ -1,6 +1,6 @@ package racingcar; -public class Car { +public class Car implements Raceable{ private final String name; private int distance = 0; public Car (String name) { @@ -20,10 +20,6 @@ public void move(int randomNumber) { } } - public void printStatus() { - System.out.println(name + " : " + "-".repeat(distance)); - } - public int getDistance() { return distance; } diff --git a/src/main/java/racingcar/CarCreator.java b/src/main/java/racingcar/CarCreator.java index 902c3fc..237a89f 100644 --- a/src/main/java/racingcar/CarCreator.java +++ b/src/main/java/racingcar/CarCreator.java @@ -6,7 +6,7 @@ import java.util.Set; public class CarCreator { - public static List createCars() { + public static List createCars() { System.out.println("경주할 자동차 이름을 입력하세요.(이름은 쉼표(,) 기준으로 구분)"); String inputName = Console.readLine(); String[] names = inputName.split(","); @@ -16,7 +16,7 @@ public static List createCars() { throw new IllegalArgumentException("중복된 값 입니다."); } - List cars = new ArrayList<>(); + List cars = new ArrayList<>(); for (String name : names) { cars.add(new Car(name)); } diff --git a/src/main/java/racingcar/GameManager.java b/src/main/java/racingcar/GameManager.java index e8d37e3..b154702 100644 --- a/src/main/java/racingcar/GameManager.java +++ b/src/main/java/racingcar/GameManager.java @@ -5,16 +5,16 @@ public class GameManager { public void start() { - List cars = CarCreator.createCars(); + List cars = CarCreator.createCars(); int attempts = AttemptReader.read(); System.out.println(); System.out.println("실행 결과"); for(int i = 1; i <= attempts; i++){ - for (Car car : cars){ + for (Raceable car : cars) { int randomNumber = Randoms.pickNumberInRange(0, 9); car.move(randomNumber); - car.printStatus(); + System.out.println(car.getName() + " : " + "-".repeat(car.getDistance())); } System.out.println(); } diff --git a/src/main/java/racingcar/Raceable.java b/src/main/java/racingcar/Raceable.java new file mode 100644 index 0000000..852507a --- /dev/null +++ b/src/main/java/racingcar/Raceable.java @@ -0,0 +1,7 @@ +package racingcar; + +public interface Raceable { + String getName(); + int getDistance(); + void move(int randomNumber); +} \ No newline at end of file diff --git a/src/main/java/racingcar/WinnerPicker.java b/src/main/java/racingcar/WinnerPicker.java index ddb4948..fcc84f3 100644 --- a/src/main/java/racingcar/WinnerPicker.java +++ b/src/main/java/racingcar/WinnerPicker.java @@ -4,16 +4,16 @@ import java.util.List; public class WinnerPicker { - public void printWinner(List cars) { + public void printWinner(List cars) { int maxdistance = 0; - for (Car car : cars) { + for (Raceable car : cars) { if (car.getDistance() > maxdistance) { maxdistance = car.getDistance(); } } List winnercars = new ArrayList<>(); - for (Car car : cars) { + for (Raceable car : cars) { if (car.getDistance() == maxdistance) { winnercars.add(car.getName()); }