/** * 工具类的作用 * 处理各种情况下用户的输入,并且能够按照程序员的要求,得到用户的控制台输入。 */public class Utility {    //静态属性    private static Scanner scanner = new Scanner(System.in);    /**     * 功能:读取键盘输入的一个菜单选项,值:1-5的范围     *     * @return 1-5     */    public static char readMenuSelection() {        char c;        while (true) {            String str = readKeyBoard(1, false);            c = str.charAt(0);//将字符串转换为字符char            if (c != '1' && c != '2'                    && c != '3' && c != '4' && c != '5') {                System.out.println("选择错误,请重新输入!");            } else break;        }        return c;    }    /**     * 功能:读取键盘输入的一个字符,如果直接按回车,则返回指定的默认值     *     * @param defaultValue 指定的默认字符串     * @return 默认值或输入的字符     */    public static char readChar(char defaultValue) {        String str = readKeyBoard(1, true);//要么是空串,要么是输入的字符串        return (str.length() == 0 ? defaultValue : str.charAt(0));    }    public static char readChar() {        String str = readKeyBoard(1, false);//要么是空串,要么是输入的字符串        return str.charAt(0);    }    /**     * 功能:读取键盘输入的整型,长度小于2位     *     * @parameter 整数     */    public static int readInt(int defaultValue) {        int n;        while (true) {            String str = readKeyBoard(10, true);            if (str.equals("")) {                return defaultValue;            }            //异常处理            try {                n = Integer.parseInt(str);                break;            } catch (NumberFormatException e) {                System.out.println(e);            }        }        return n;    }    /**     * 功能:读取键盘输入的指定长度的字符串     *     * @return 指定长度的字符串     * @parameter limit 限制的长度     */    public static String readString(int limit) {        return readKeyBoard(limit, false);    }    /**     * 功能:读取键盘输入的指定长度的字符串或默认值,如果直接回车,返回默认的字符串     *     * @param limit        限制的长度     * @param defaultValue 指定的默认值     * @return 指定长度的字符串     */    public static String readString(int limit, String defaultValue) {        String str = readKeyBoard(limit, true);        return str.equals("") ? defaultValue : str;    }    /**     * 功能:从键盘读取输入的选项,Y/N     * 将小的功能封装到一个方法中     *     * @return Y/N     */    public static char readConfirmSelection() {        System.out.println("请输入你的选择(Y/N),请小心选择:");        char c;        while (true) {//无限循环            //在这里,将接受到字符,转成了大写字母            //y=>Y n=>N            String str = readKeyBoard(1, false).toUpperCase();            c = str.charAt(0);            if (c == 'Y' || c == 'N') {                break;            } else {                System.out.println("选择错误,请重新输入:");            }        }        return c;    }    /**     * 功能:从键盘读取字符串     *     * @param flag  判断是否严格     * @param limit 是否可以为空字符串     * @return str 符合要求的字符串     */    public static String readKeyBoard(int limit, boolean flag) {        String str;        do {            str = scanner.nextLine();            if (str.length() == 0) {                if (flag == false) {                    while (true) {                        System.out.println("请输入:");                        str = scanner.nextLine();                        if (str.length() != 0) {                            break;                        }                    }                } else                    return "";            }            if (str.length() > limit){                System.out.print("请输入长度不大于" + limit +"的字符串:");            }        }while (str.length() > limit);    return str;    }}