我们想为图书馆的图书借阅系统创建一个命令行界面(CLI)。
添加一个带有main方法的CLI类。这样你的代码就有了两个带有main方法的类:Test类,你可以用它来运
行你所有类的所有测试;CLI类,你现在要用它来运行你的程序的基于文本的交互式界面。
CLI类没有任何testCLI方法,因为这个类只是用来让用户交互式地使用系统。
在CLI类中添加一个私有的静态input实例变量,它是一个Scanner对象,从标准输入流System.in中读取
输入。
私人静态扫描器输入 = 新的扫描器(System.in)。
当你需要读取输入时,总是使用这个输入扫描器对象。(千万不要关闭这个扫描器对象,因为这也会关闭标准
输 入 流 System.in , 然 后 当 你 下 次 试 图 从 标 准 输 入 流 中 读 取 东 西 时 , 你 会 得 到 一 个
NoSuchElementException!)
除了主方法和输入实例变量外,CLI类还有两个方法,叫做
readLine和readPosInt。
readLine方法是静态和私有的,它接收一个字符串作为参数,并返回另一个字符串作为结果。该方法
readPosInt方法是静态和私有的,它接受一个字符串作为参数,并返回一个正整数作为结果。
readLine方法使用System.out.print(而不是println)在屏幕上打印其字符串参数(以后我们使用
readLine方法时,该方法的字符串参数将是告诉用户输入一些文本的信息)。然后,readLine方法使用输
入扫描器对象从程序的用户那里读取一整行的文本,并将文本作为结果返回。
readPosInt方法使用System.out.print(不是println)在屏幕上打印其字符串参数(以后我们使用
readPosInt方法时,该方法的字符串参数将是一条告诉用户输入某个整数的信息)。然后,readPosInt方法
使用输入扫描器对象,从程序的用户那里读取一个整数。
在读取整数后,readPosInt方法还必须使用扫描器的nextLine方法来读取用户在输入整数后按下键盘上
的回车键所产生的单个换行符(如果你不使用readPosInt方法中的nextLine方法来读取这个换行符。那
么换行符将保留在输入流中,并且,当你下次使用上述readLine方法时,readLine方法将立即从输入流中
只读取换行符,并返回一个空字符串作为结果,而无需等待用户输入任何东西!)。)
如果用户输入的不是一个整数,那么扫描器的nextInt方法将抛出一个InputMismatchException。在这
种情况下,你的readPosInt方法的代码必须捕获这个异常,使用System.out.println向用户打印错误
信息 "你必须输入一个整数!"(使用
使用扫描器的 nextLine 方法读取(并忽略)程序用户输入的错误输入(如果不这样做,用户输入的错误输
入将保留在输入流中,下次再次调用 nextInt 方法时,将再次出现 InputMismatchException!),然后
再做一遍(包括再次打印readPosInt方法的字符串参数),尝试再次读取一个整数(提示:将整个方法的代码
放在一个while循环中)。
在读完整数和换行符后(换行符被忽略),readPosInt方法测试整数。如果整数大于或等于0 ,那么
readPosInt 方法就将整数作为结果返回。如果整数严格小于零,那么 readPosInt 方法使用
System.out.println 向 用 户 打 印 错 误 信 息 "Positive integers only!" ( 为 此 使 用
System.out.println,而不是 System.err.println,否则你可能会遇到 Eclipse 中的错误.),然后再
做一遍(包括再次打印 readPosInt 方法的字符串参数),尝试再次读取一个整数(提示:只需打印错误
信息,然后你已经围绕整个代码的 while 循环会自动再做一遍.)。
例如,如果你想检查你的两个方法readLine和readPosInt是否正常工作,把下面的代码放在你的CLI类的
主方法中。
public static void main(String[] args) {
String str1 = readLine("输入一些文本:");
System.out.println("读取的文本是:" + str1);
int i = readPosInt("输入一个整数:");
System.out.println("读取的整数是:" + i)。
String str2 = readLine("再次输入一些文本:");
System.out.println("读取的文本是:" + str2)。
}
那么运行CLI类的主方法应该是这样的(其中a b, c, d e, - 100, -200, 1234, 和f
g是用户在键盘上输入的信息)。
输入一些文本:a b 读
出的文本是:a b 输入一
个整数:c
你必须输入一个整数!输入一个整数:
d e 你必须输入一个整数!
输入一个整数: -100 仅限正整数!
输入一个整数:-200 仅限正
整数!输入一个整数: 1234 读
出的整数是: 1234
再次输入一些文字:f g 读出的文
字是:f g