耿庆英 发表于 2021-5-29 03:52:39

找不到符号( 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;
}
}

汗水背叛了自己 发表于 2021-5-30 04:20:07

说实话,你第二行就有问题了
Scanner类为什么要用private和static去修饰呢?

子棠 发表于 2021-5-30 20:59:34

readKeyBoard是你定义的方法你往下面继续看代码

鹤归时雾起 发表于 2021-5-31 08:18:53

你都没用到Scanner,怎么读取用户输入?

池骋 发表于 2021-5-31 20:21:40

你那个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了就继续返回输入字符的长度。所以你写的代码报错了,就是因为上面这个方法没用对。

不油腻的大叔 发表于 2021-6-1 09:59:22

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]
查看完整版本: 找不到符号( readKeyBoard(1); )