我必须为计算机科学课做一个项目。问题是:
图书馆的顾客最多可以借三本书。因此,一个顾客有一个名字和最多三本书。一本书有作者和书名。设计并实现两个类,分别是Patron和Book,以表示这些对象和以下行为:
赞助人类应为每本书使用一个单独的实例变量(总共三本)。这些变量中的每一个最初都是空的。借书时,顾客会寻找一个不为null的变量。如果找不到这样的变量,则该方法返回false。如果找到空变量,则将其重置为新书,并且该方法返回true。类似的考虑也适用于其他方法。使用方法aString.equals(aString)比较两个字符串是否相等。确保为您的类包括适当的toString方法,并使用测试器程序对其进行测试。
这是我的Client课程,其中包含main方法:http : //pastebin.com/JpxCT2F6
Client
main
现在我的问题是,当我运行该程序时,该程序不会等待用户输入。这是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”,这意味着不返回任何书,而是给了我无效的输入输出。
您nextInt()在代码的第71行上使用,该代码将获得用户提供的整数答案。然后,您可以使用nextLine()哪个命令使该扫描仪前进到当前行之外,并返回被跳过的输入。。跳过的输入仅是上一次nextInt()调用中的换行符(它不会仅读取整行int)。
nextInt()
nextLine()
您可以通过以下方式跳过此操作:input.nextLine()在需要输入之前调用一次,或者使用nextLine()代替nextInt()并将字符串转换为整数值。
input.nextLine()