diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index a17a52e7..0c61e1d5 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -1,7 +1,29 @@ package racingcar; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import static camp.nextstep.edu.missionutils.Console.readLine; + public class Application { public static void main(String[] args) { // TODO: 프로그램 구현 + ArrayList cars = new ArrayList<>(); + System.out.println("경주할 자동차 이름을 입력하세요."); + String name = readLine(); + + // 피드백: 배열 → List으로 바꿈 + List nameList = Arrays.asList(name.split(",")); + + for (String n : nameList) { // 피드백: 배열 → List으로 바꿈 + Car car = new Car(n); + cars.add(car); + } + + System.out.println("시도할 회수는 몇회인가요?"); + int count = Integer.parseInt(readLine()); + + Racing race = new Racing(); + race.startRace(cars, count); } } diff --git a/src/main/java/racingcar/Car.java b/src/main/java/racingcar/Car.java new file mode 100644 index 00000000..1fc07209 --- /dev/null +++ b/src/main/java/racingcar/Car.java @@ -0,0 +1,35 @@ +package racingcar; +import camp.nextstep.edu.missionutils.Randoms; + +public class Car { + private static final int MOVE_THRESHOLD = 4; // 피드백: 4를 의미있는 상수로 + protected String name; + private String distance; + + public Car(String Name) { + if (Name == null || Name.length() > 5) + throw new IllegalArgumentException(); + this.name = Name; + this.distance = ""; + } + + public void move() { // 피드백: 접근제어자 명시 (default → public) + int num = Randoms.pickNumberInRange(0, 9); + if (num >= MOVE_THRESHOLD) { + this.distance += "-"; + } + } + + public String getName() { + return name; + } + + public String getDistance() { + return distance; + } + + public int getDistanceLength() { + return distance.length(); + } + +} diff --git a/src/main/java/racingcar/Racing.java b/src/main/java/racingcar/Racing.java new file mode 100644 index 00000000..5196b215 --- /dev/null +++ b/src/main/java/racingcar/Racing.java @@ -0,0 +1,31 @@ +package racingcar; + +import java.util.ArrayList; + +public class Racing { + public void startRace(ArrayList cars, Integer count) { + for (int i = 0; i < count; i++) { + for (Car c : cars) { + c.move(); + System.out.println(c.getName() + " : " + c.getDistance()); + } + System.out.println(); + } + + int max = 0; + for (Car c : cars) { + if (c.getDistanceLength() > max) { + max = c.getDistanceLength(); + } + } + + ArrayList names = new ArrayList<>(); + for (Car c : cars) { + if (c.getDistanceLength() == max) { + names.add(c.getName()); + } + } + + System.out.println("최종 우승자 : " + String.join(",", names)); + } +}