/** * 工具类的作用 * 处理各种情况下用户的输入,并且能够按照程序员的要求,得到用户的控制台输入。 */ 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; } }