我必须为我的计算机科学课做一个项目。问题是:
图书馆的读者最多可以借三本书。因此,赞助人有一个名字和最多三本书。一本书有作者和标题。设计并实现两个类(Patron 和 Book)来表示这些对象和以下行为:
- 客户端可以实例化一本书,并带有标题和作者
- 客户可以检查但不能修改书名或作者
- 客户可以询问顾客在哪里借阅了给定的书籍(按书名标识)。
- 客户可以告诉顾客归还给定的书籍(按书名标识)。
- 客户可以告诉顾客借一本书。
Patron 类应该为每本书(总共三本书)使用一个单独的实例变量。
这些变量中的每一个最初都是空的。借书时,读者会查找不为空的变量。如果没有找到这样的变量,该方法返回 false。如果找到 null 变量,则将其重置为新书,并且该方法返回 true。类似的考虑也适用于其他方法。使用方法 aString.equals(aString) 比较两个字符串是否相等。确保为您的类包含适当的 toString 方法,并使用测试程序对其进行测试。
这是我的Client
类,其中包含main
方法:http://pastebin.com/JpxCT2F6
现在我的问题是,当我运行程序时,程序不等待用户输入。以下是 Eclipse 控制台中出现的内容:
Please enter title of book 1:
s
Please enter author of book 1:
e
Please enter title of book 2:
f
Please enter author of book 2:
t
Please enter title of book 3:
g
Please enter author of book 3:
d
Which book would you like to check for?
s
The patron has taken out the book s
Would you like to return a book? (1 yes or 2 no)
1
Which book would you like to return?
Sorry, could not find the book
Would you like to take out a book? (1 yes or 2 no)
2
Invalid option
Which book would you like to check for?
The patron does not have taken out
Would you like to return a book? (1 yes or 2 no)
正如您所看到的,在“您想退回哪本书?”之后,控制台不会等待用户输入。相反,它采用空白值。后来在代码中,我输入了“2”,这意味着不返回任何书,而是给我一个无效的输入输出。
You use nextInt()
在代码的第 71 行,它获取用户提供的整数答案。然后你使用nextLine()
which 使扫描器前进到当前行并返回跳过的输入。。跳过的输入只是前一个的换行符nextInt()
调用(它不读取整行,只读取 int)。
您可以通过调用跳过此步骤input.nextLine()
在您需要输入之前一次,或者使用nextLine()
代替nextInt()
并将字符串转换为整数值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)