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); } }