package com.studentmanagement.util; import java.util.Scanner; /** * 输入工具类,提供安全的用户输入处理 */ public class InputUtil { private static final Scanner scanner = new Scanner(System.in); /** * 获取用户输入的整数 * @param prompt 提示信息 * @return 输入的整数 */ public static int getIntInput(String prompt) { while (true) { System.out.print(prompt); try { return Integer.parseInt(scanner.nextLine()); } catch (NumberFormatException e) { System.err.println("请输入有效的整数!"); } } } /** * 获取用户输入的整数,带范围检查 * @param prompt 提示信息 * @param min 最小值 * @param max 最大值 * @return 输入的整数 */ public static int getIntInput(String prompt, int min, int max) { while (true) { int value = getIntInput(prompt); if (value >= min && value <= max) { return value; } System.err.println("请输入" + min + "到" + max + "之间的整数!"); } } /** * 获取用户输入的字符串 * @param prompt 提示信息 * @return 输入的字符串 */ public static String getStringInput(String prompt) { System.out.print(prompt); return scanner.nextLine().trim(); } /** * 获取用户输入的非空字符串 * @param prompt 提示信息 * @return 输入的非空字符串 */ public static String getNonEmptyStringInput(String prompt) { while (true) { String input = getStringInput(prompt); if (!input.isEmpty()) { return input; } System.err.println("输入不能为空!"); } } /** * 获取用户输入的浮点数 * @param prompt 提示信息 * @return 输入的浮点数 */ public static double getDoubleInput(String prompt) { while (true) { System.out.print(prompt); try { return Double.parseDouble(scanner.nextLine()); } catch (NumberFormatException e) { System.err.println("请输入有效的数字!"); } } } /** * 获取用户输入的浮点数,带范围检查 * @param prompt 提示信息 * @param min 最小值 * @param max 最大值 * @return 输入的浮点数 */ public static double getDoubleInput(String prompt, double min, double max) { while (true) { double value = getDoubleInput(prompt); if (value >= min && value <= max) { return value; } System.err.println("请输入" + min + "到" + max + "之间的数字!"); } } /** * 关闭扫描器 */ public static void close() { scanner.close(); } }