小编典典

代码不等待用户输入吗?

java

我必须为计算机科学课做一个项目。问题是:

图书馆的顾客最多可以借三本书。因此,一个顾客有一个名字和最多三本书。一本书有作者和书名。设计并实现两个类,分别是Patron和Book,以表示这些对象和以下行为:

  • 客户可以实例化带有标题和作者的书
  • 客户可以检查但不能修改书名或作者
  • 客户可以向顾客询问是否借用了给定的书(按书名识别)。
  • 客户可以告诉顾客退还给定的书(按书名识别)。
  • 客户可以告诉顾客借用给定的书。

赞助人类应为每本书使用一个单独的实例变量(总共三本)。这些变量中的每一个最初都是空的。借书时,顾客会寻找一个不为null的变量。如果找不到这样的变量,则该方法返回false。如果找到空变量,则将其重置为新书,并且该方法返回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”,这意味着不返回任何书,而是给了我无效的输入输出。


阅读 160

收藏
2020-11-26

共1个答案

小编典典

nextInt()在代码的第71行上使用,该代码将获得用户提供的整数答案。然后,您可以使用nextLine()哪个命令使该扫描仪前进到当前行之外,并返回被跳过的输入。。跳过的输入仅是上一次nextInt()调用中的换行符(它不会仅读取整行int)。

您可以通过以下方式跳过此操作:input.nextLine()在需要输入之前调用一次,或者使用nextLine()代替nextInt()并将字符串转换为整数值。

2020-11-26