From 31c18b8cfbb3dfc219e4b471c5aea8d43d461d15 Mon Sep 17 00:00:00 2001 From: kiminsuk Date: Tue, 25 Mar 2025 00:29:53 +0900 Subject: [PATCH 1/2] Bung Bung --- src/main/java/racingcar/Application.java | 33 +++++++++++++ src/main/java/racingcar/Car.java | 30 ++++++++++++ src/main/java/racingcar/RacingCar.java | 51 ++++++++++++++++++++ src/test/java/racingcar/ApplicationTest.java | 9 ++-- 4 files changed, 119 insertions(+), 4 deletions(-) create mode 100644 src/main/java/racingcar/Car.java create mode 100644 src/main/java/racingcar/RacingCar.java diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index a17a52e7..967a932f 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -1,7 +1,40 @@ package racingcar; +import camp.nextstep.edu.missionutils.Console; +import camp.nextstep.edu.missionutils.Randoms; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + public class Application { + @DisplayName("실행") + @Test public static void main(String[] args) { // TODO: 프로그램 구현 + System.out.println("경주할 자동차 이름을 입력하세요.(이름은 쉼표(,) 기준으로 구분)"); + String input=Console.readLine(); + RacingCar racingCar; + int n; + try{ + racingCar=new RacingCar(input); + System.out.println("시도할 회수는 몇회인가요?"); + input=Console.readLine(); + n= getTurn(input); + }catch(IllegalArgumentException e) { + System.out.println("잘못된 값이 입력되어서 종료합니다."); + return; + } + racingCar.runRace(n); + racingCar.printResult(); + return; + } + public static int getTurn(String input) { + int n; + try{ + n = Integer.parseInt(input); + }catch(NumberFormatException e) { + System.out.println("숫자가 아닌 다른 값이 입력되었습니다."); + throw new IllegalArgumentException("에러 : 잘못된 횟수 입력"); + } + return n; } } diff --git a/src/main/java/racingcar/Car.java b/src/main/java/racingcar/Car.java new file mode 100644 index 00000000..79730e98 --- /dev/null +++ b/src/main/java/racingcar/Car.java @@ -0,0 +1,30 @@ +package racingcar; + +import camp.nextstep.edu.missionutils.Randoms; + +public class Car { + String name; + int distance; + + public Car(String name) { + name=name.replaceAll(" ",""); + if(name.length()>5||name.length()<1) { + System.out.println("자동차 이름은 1글자 이상, 5글자 이하여야 합니다."); + throw new IllegalArgumentException("에러 : 자동차 이름 글자수 초과"); + } + this.name=name; + this.distance=0; + } + public void run() { + if(Randoms.pickNumberInRange(0,9)>=4){ + this.distance++; + } + } + public void print() { + System.out.print(this.name+" : "); + for(int i=0;i - assertThatThrownBy(() -> runException("pobi,javaji", "1")) - .isInstanceOf(IllegalArgumentException.class) + assertThatCode(() -> runException("pobi,javaji", "1")) + .doesNotThrowAnyException() ); } From f628a1aa1219902c4bc649b5be8f2eeafcb0e4e8 Mon Sep 17 00:00:00 2001 From: kiminsuk Date: Tue, 1 Apr 2025 01:40:59 +0900 Subject: [PATCH 2/2] 4_1_1_40 --- src/main/java/racingcar/Application.java | 34 +++++++------------ src/main/java/racingcar/Car.java | 9 +++-- .../java/racingcar/CarNameInputException.java | 7 ++++ .../{RacingCar.java => RacingGame.java} | 21 ++++++++---- src/test/java/racingcar/ApplicationTest.java | 6 ++-- 5 files changed, 42 insertions(+), 35 deletions(-) create mode 100644 src/main/java/racingcar/CarNameInputException.java rename src/main/java/racingcar/{RacingCar.java => RacingGame.java} (69%) diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index 967a932f..6a10becb 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -6,34 +6,26 @@ import org.junit.jupiter.api.Test; public class Application { - @DisplayName("실행") - @Test public static void main(String[] args) { // TODO: 프로그램 구현 - System.out.println("경주할 자동차 이름을 입력하세요.(이름은 쉼표(,) 기준으로 구분)"); - String input=Console.readLine(); - RacingCar racingCar; + System.out.println( + "경주할 자동차 이름을 입력하세요." + + "(이름은 쉼표(,) 기준으로 구분)"); + RacingGame racingGame; int n; - try{ - racingCar=new RacingCar(input); - System.out.println("시도할 회수는 몇회인가요?"); - input=Console.readLine(); - n= getTurn(input); - }catch(IllegalArgumentException e) { - System.out.println("잘못된 값이 입력되어서 종료합니다."); - return; - } - racingCar.runRace(n); - racingCar.printResult(); + racingGame = new RacingGame(Console.readLine()); + System.out.println("시도할 회수는 몇회인가요?"); + n = getTurn(Console.readLine()); + racingGame.runRace(n); + racingGame.printResult(); return; } public static int getTurn(String input) { int n; - try{ - n = Integer.parseInt(input); - }catch(NumberFormatException e) { - System.out.println("숫자가 아닌 다른 값이 입력되었습니다."); - throw new IllegalArgumentException("에러 : 잘못된 횟수 입력"); + n = Integer.parseInt(input); + if(n<1) { + throw new RuntimeException + ("1보다 작은 횟수"); } return n; } diff --git a/src/main/java/racingcar/Car.java b/src/main/java/racingcar/Car.java index 79730e98..b85b1551 100644 --- a/src/main/java/racingcar/Car.java +++ b/src/main/java/racingcar/Car.java @@ -6,12 +6,15 @@ public class Car { String name; int distance; - public Car(String name) { - name=name.replaceAll(" ",""); + public Car(String name) throws CarNameInputException{ + name=name.trim(); if(name.length()>5||name.length()<1) { System.out.println("자동차 이름은 1글자 이상, 5글자 이하여야 합니다."); - throw new IllegalArgumentException("에러 : 자동차 이름 글자수 초과"); + throw new CarNameInputException("잘못된 값이 입력되어서 종료합니다."); } + /*if(name.indexOf(":")==-1){ + throw new CarNameInputException("':'는 포함하면 안됩니다."); + }*/ this.name=name; this.distance=0; } diff --git a/src/main/java/racingcar/CarNameInputException.java b/src/main/java/racingcar/CarNameInputException.java new file mode 100644 index 00000000..b9742501 --- /dev/null +++ b/src/main/java/racingcar/CarNameInputException.java @@ -0,0 +1,7 @@ +package racingcar; + +public class CarNameInputException extends RuntimeException { + public CarNameInputException(String msg) { + super(msg); + } +} diff --git a/src/main/java/racingcar/RacingCar.java b/src/main/java/racingcar/RacingGame.java similarity index 69% rename from src/main/java/racingcar/RacingCar.java rename to src/main/java/racingcar/RacingGame.java index 6bb5e2d1..2d197343 100644 --- a/src/main/java/racingcar/RacingCar.java +++ b/src/main/java/racingcar/RacingGame.java @@ -2,10 +2,10 @@ import static org.assertj.core.api.Assertions.*; -public class RacingCar { +public class RacingGame { Car[] car; - public RacingCar(String input) { + public RacingGame(String input) { String carName[] = input.split(","); this.car=new Car[carName.length]; @@ -13,6 +13,14 @@ public RacingCar(String input) { this.car[i]=new Car(carName[i]); //assertThat(car[i].name.length()).isBetween(1,5); // 차 이름 글자수 확인 + this.checkSameCarName(i);//차 이름 중복 확인 + } + } + public void checkSameCarName(int i){ + for(int j=0;j - assertThatCode(() -> runException("pobi,javaji", "1")) - .doesNotThrowAnyException() - ); + assertThatThrownBy(() -> runException("pobi,javaji", "1")) + .isInstanceOf(CarNameInputException.class); } @Override