找不到符号( readKeyBoard(1); )
public class Utility{private static Scanner scanner =new Scanner(System.in);
/**
用于界面菜单的选择。该方法读取键盘,如果用户键入‘1’-‘4’中的任意字符,则方法返回。
返回值为用户键入字符。
*/
public static char readMenuSelection(){
char c;
for ( ; ; ){
String str = readKeyBoard(1);
c = str.charAt(0);
if (c != '1'&& c !='2' && c != '3' && c != '4'){
System.out.print("选择错误,请重新输入:");
}
else {
break;
}
}
return c;
}
}
说实话,你第二行就有问题了
Scanner类为什么要用private和static去修饰呢? readKeyBoard是你定义的方法你往下面继续看代码 你都没用到Scanner,怎么读取用户输入? 你那个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了就继续返回输入字符的长度。所以你写的代码报错了,就是因为上面这个方法没用对。 private static String readKeyBoard(int limit){
String line = "";
while(scanner.hasNext()){
line = scanner.nextLine();
if(line.length() < 1 || line.length() >limit){
System.out.print("输入长度(不大于" + limit + ")错误,请重新输入: ");
continue;
}
break;
}
return line;
}
页:
[1]