找不到符号( readKeyBoard(1); )

兜着走 2020-06-10 08:06:43
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; } }
...全文
7479 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
magicyang168 2021-05-06
  • 打赏
  • 举报
回复 2
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; }
老王就是我 2021-03-19
  • 打赏
  • 举报
回复
readKeyBoard()。这个是哪来的?,你连实现都没有
m0_46715963 2021-03-18
  • 打赏
  • 举报
回复 2
引用 6 楼 Minghao Lau 的回复:
你那个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了就继续返回输入字符的长度。所以你写的代码报错了,就是因为上面这个方法没用对。
太感谢了,终于找到bug了[face]monkey2:002.png[/face]
Minghao Lau 2021-01-05
  • 打赏
  • 举报
回复 3
你那个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了就继续返回输入字符的长度。所以你写的代码报错了,就是因为上面这个方法没用对。
new var meiNv 2020-10-08
  • 打赏
  • 举报
回复
有可能是你的方法readKeyBoard不是static的吧,报这个错一般都是没有定义错误或者根本就没有定义这个方法,emmm,你莫非不用IDE的,用文本编辑器打的嘛,IDE会报错提示的。
从入门to入万 2020-10-06
  • 打赏
  • 举报
回复
你都没用到Scanner,怎么读取用户输入?
  • 打赏
  • 举报
回复
readKeyBoard是你定义的方法 你往下面继续看代码
qq_39936465 2020-06-10
  • 打赏
  • 举报
回复
引用 楼主 兜着走 的回复:
都没看的readKeyBoard的方法体!
gkchaos 2020-06-10
  • 打赏
  • 举报
回复
说实话,你第二行就有问题了 Scanner类为什么要用private和static去修饰呢?
点炮 2022-04-08
  • 举报
回复
@gkchaos 完全可以这么修饰

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧