From 762d67143dc82424e56df950c305491c7a26a2e5 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 18:02:14 +0900 Subject: [PATCH] =?UTF-8?q?feat(InputView):=20=EC=98=A4=EB=A5=98=20?= =?UTF-8?q?=EB=B0=9C=EC=83=9D=20=EC=A7=80=EC=A0=90=EB=B6=80=ED=84=B0=20?= =?UTF-8?q?=EB=8B=A4=EC=8B=9C=20=EC=9E=85=EB=A0=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/view/InputView.java | 30 +++++++++++++++------ 1 file changed, 22 insertions(+), 8 deletions(-) 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(); + } } }