From 4b1d2d0943f68815806345d425b985da58797685 Mon Sep 17 00:00:00 2001 From: Svjatoslav Agejenko Date: Thu, 20 Mar 2025 00:32:46 +0200 Subject: [PATCH] Improve user interaction. Better way to ask boolean. --- .../commons/cli_helper/CLIHelper.java | 31 +++++++------------ 1 file changed, 12 insertions(+), 19 deletions(-) diff --git a/src/main/java/eu/svjatoslav/commons/cli_helper/CLIHelper.java b/src/main/java/eu/svjatoslav/commons/cli_helper/CLIHelper.java index 08354b7..fb98f12 100755 --- a/src/main/java/eu/svjatoslav/commons/cli_helper/CLIHelper.java +++ b/src/main/java/eu/svjatoslav/commons/cli_helper/CLIHelper.java @@ -24,31 +24,24 @@ public class CLIHelper { * @param prompt to show to the user * @return true is user answered affirmative. */ - public static boolean askBoolean(final String prompt) { + public static boolean askBoolean(final String prompt, final boolean defaultValue) { - final BufferedReader br = new BufferedReader(new InputStreamReader( - System.in)); + while (true) + { + String line = askString(prompt + " [" + (defaultValue ? "Y/n" : "y/N") + "]: "); + if (line == null) return defaultValue; - while (true) - try { - System.out.print(prompt); - - String line = br.readLine(); - if (line != null) { - final String userInput = line.toLowerCase(); + final String userInput = line.toLowerCase(); - if ("y".equals(userInput) || "yes".equals(userInput) - || "true".equals(userInput)) - return true; + if ("y".equals(userInput) || "yes".equals(userInput) + || "true".equals(userInput)) + return true; - if ("n".equals(userInput) || "no".equals(userInput) - || "false".equals(userInput)) - return false; - } + if ("n".equals(userInput) || "no".equals(userInput) + || "false".equals(userInput)) + return false; System.out .println("Invalid input. You shall enter y/yes/true or n/no/false."); - } catch (final IOException ioe) { - ioe.printStackTrace(); } } -- 2.20.1