diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index a17a52e..b25b0fe 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -1,7 +1,90 @@ package racingcar; +import camp.nextstep.edu.missionutils.Randoms; + +import java.util.*; + + +class CarNames { + String name; + int moveCount; + + public CarNames(String name) { + this.name = name; + } + public void move(){ + moveCount++; + } + public int getMoveCount(){ + return moveCount; + } +} + public class Application { public static void main(String[] args) { - // TODO: 프로그램 구현 + Scanner scanner = new Scanner(System.in); + + System.out.println("경주할 자동차 이름을 입력하세요.(이름은 쉼표(,) 기준으로 구분)"); + String input = scanner.nextLine(); + + String[] a = input.split(","); + + List cars = new ArrayList<>(); + for (String name : a) { + if (name.isEmpty()) {throw new IllegalArgumentException("비어있음");} + if (name.length()>5) {throw new IllegalArgumentException("5자초과");} + if (name.contains(" ")) {throw new IllegalArgumentException("공백포함됨");} + cars.add(new CarNames(name)); + } + + Set dupCheck = new HashSet<>(); + for (CarNames c: cars){dupCheck.add(c.name);} + + if (dupCheck.size() != cars.size()) {throw new IllegalArgumentException("중복");} + + + System.out.println("시도할 회수는 몇회인가요?"); + int n; + try { + n= scanner.nextInt(); + if (n<=0){ + throw new IllegalArgumentException("0번이하"); + } + } catch (Exception e){ + throw new IllegalArgumentException("숫자비었음"); + } + System.out.println(); + System.out.println("실행 결과"); + + for(int i=n; i>0; i--){ + for(CarNames c:cars){ + int r = Randoms.pickNumberInRange(0,9); + if(r>=4){ + c.move(); + } + System.out.printf("%s : %s%n",c.name,"-".repeat(c.getMoveCount())); + } + System.out.println(); + } + + + + List winner = new ArrayList<>(); + int max = 0; + for(CarNames c: cars ){ + if(max==c.getMoveCount()){ + winner.add(c.name); + } else if(max