diff --git a/src/main/java/racingcar/view/InputView.java b/src/main/java/racingcar/view/InputView.java index 661e56c5a..a882c3afa 100644 --- a/src/main/java/racingcar/view/InputView.java +++ b/src/main/java/racingcar/view/InputView.java @@ -6,6 +6,7 @@ import java.util.Arrays; import java.util.List; +import java.util.function.Supplier; import java.util.stream.Collectors; public class InputView { @@ -15,16 +16,29 @@ public class InputView { private final InputValidator inputValidator = new InputValidator(); public List readNames() { - String names = Console.readLine(); - inputValidator.validateDelimiter(names); - return Arrays.stream(names.split(NAMES_REGEX)) - .map(Name::new) - .collect(Collectors.toList()); + return attemptedInput(() -> { + String names = Console.readLine(); + inputValidator.validateDelimiter(names); + return Arrays.stream(names.split(NAMES_REGEX)) + .map(Name::new) + .collect(Collectors.toList()); + }); } public int readTryCount() { - String input = Console.readLine(); - inputValidator.validateIsNumber(input); - return Integer.parseInt(input); + return attemptedInput(() -> { + String input = Console.readLine(); + inputValidator.validateIsNumber(input); + return Integer.parseInt(input); + }); + } + + private T attemptedInput(Supplier supplier) { + try { + return supplier.get(); + } catch (IllegalArgumentException exception) { + System.out.println(exception.getMessage()); + return supplier.get(); + } } }