你那个readKeyBoard方法漏掉了一个false,应该是:readKeyBoard(1, false);为什么是这个?因为源于你自己写的方法(如下):
private static String readKeyBoard(int limit,boolean blankReturn) {
String line = "";
while (scanner.hasNextLine()) {
line = scanner.nextLine();
if(line.length() == 0) {
if(blankReturn) return line;
else continue;
}
if (line.length() < 1 || line.length() > limit) {
System.out.print("输入长度(不大于" + limit + ")错误,请重新输入:");
continue;
}
break;
}
return line;
}
有了上面这个方法以后,你调readKeyBoard()方法时,第一个形参返回的才是int型,第二个形参返回的才是boolean型,也就是说当从键盘获取的字符长度小于1或者大于limit的时候,就返回false,返回false了就continue继续让用户输入,如果在范围内了那个boolean型就返回true,返回true了就继续返回输入字符的长度。所以你写的代码报错了,就是因为上面这个方法没用对。