From c9a0cd1b72d7f55e536739f9182e82d936908200 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EC=97=B0=EC=A7=84?= Date: Fri, 8 Sep 2023 17:58:03 +0900 Subject: [PATCH] =?UTF-8?q?feat(InputValidator):=20=EC=88=AB=EC=9E=90?= =?UTF-8?q?=EB=A1=9C=20=EC=9E=85=EB=A0=A5=ED=95=98=EC=A7=80=20=EC=95=8A?= =?UTF-8?q?=EC=9D=80=20=EA=B2=BD=EC=9A=B0=20=EC=98=88=EC=99=B8=20=EB=B0=9C?= =?UTF-8?q?=EC=83=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/README.md | 2 +- src/main/java/racingcar/constant/ExceptionMessage.java | 3 ++- src/main/java/racingcar/validator/InputValidator.java | 8 ++++++++ src/main/java/racingcar/view/InputView.java | 4 +++- 4 files changed, 14 insertions(+), 3 deletions(-) diff --git a/docs/README.md b/docs/README.md index 30c5d3a1f..fc90f9c5f 100644 --- a/docs/README.md +++ b/docs/README.md @@ -6,7 +6,7 @@ - [x] 이름이 5글자가 넘을 경우 예외 발생 - [x] 횟수 입력 안내 출력 - [x] 횟수 입력 - - [ ] 숫자로 입력하지 않은 경우 예외 발생 + - [x] 숫자로 입력하지 않은 경우 예외 발생 - [x] 입력받은 횟수만큼 자동차 이동 - [x] 랜덤으로 숫자를 뽑는다. - [x] 뽑은 숫자가 4이상일 경우 이동한다. diff --git a/src/main/java/racingcar/constant/ExceptionMessage.java b/src/main/java/racingcar/constant/ExceptionMessage.java index f5fa85fd5..cc0ab3cbe 100644 --- a/src/main/java/racingcar/constant/ExceptionMessage.java +++ b/src/main/java/racingcar/constant/ExceptionMessage.java @@ -3,7 +3,8 @@ public enum ExceptionMessage { INVALID_LENGTH("이름은 5글자 이하로 입력해야합니다."), - INCORRECT_DELIMITER("','로 구분하여 입력해야합니다."); + INCORRECT_DELIMITER("','로 구분하여 입력해야합니다."), + NOT_INTEGER("숫자로 입력해야 합니다."); private static final String PREFIX = "[ERROR] "; private final String message; diff --git a/src/main/java/racingcar/validator/InputValidator.java b/src/main/java/racingcar/validator/InputValidator.java index b8f7fe57d..e82057308 100644 --- a/src/main/java/racingcar/validator/InputValidator.java +++ b/src/main/java/racingcar/validator/InputValidator.java @@ -7,6 +7,7 @@ public class InputValidator { private static final String DELIMITER_REGEXP = "^[a-zA-Zㄱ-힣0-9,]*$"; + private static final String NUMBER_REGEXP = "^\\d*$"; public void validateDelimiter(String input) { if (!Pattern.matches(DELIMITER_REGEXP, input)) { @@ -14,4 +15,11 @@ public void validateDelimiter(String input) { throw new IllegalArgumentException(exceptionMessage.toString()); } } + + public void validateIsNumber(String input) { + if (!Pattern.matches(NUMBER_REGEXP, input)) { + ExceptionMessage exceptionMessage = ExceptionMessage.NOT_INTEGER; + throw new IllegalArgumentException(exceptionMessage.toString()); + } + } } diff --git a/src/main/java/racingcar/view/InputView.java b/src/main/java/racingcar/view/InputView.java index e6a19df3b..661e56c5a 100644 --- a/src/main/java/racingcar/view/InputView.java +++ b/src/main/java/racingcar/view/InputView.java @@ -23,6 +23,8 @@ public List readNames() { } public int readTryCount() { - return Integer.parseInt(Console.readLine()); + String input = Console.readLine(); + inputValidator.validateIsNumber(input); + return Integer.parseInt(input); } }