Java 代码不';不要等待用户输入?
我必须为我的计算机科学课做一个项目。问题是: 图书馆的读者最多可以借三本书。因此,一位赞助人有一个名字,最多有三本书。一本书有作者和书名。设计并实现两个类,Patron和Book,以表示这些对象和以下行为:Java 代码不';不要等待用户输入?,java,input,console,Java,Input,Console,我必须为我的计算机科学课做一个项目。问题是: 图书馆的读者最多可以借三本书。因此,一位赞助人有一个名字,最多有三本书。一本书有作者和书名。设计并实现两个类,Patron和Book,以表示这些对象和以下行为: 客户机可以实例化具有标题和作者的书籍 客户可以检查但不能修改书名或作者 客户可以向客户询问其在哪里借了给定的书(以书名标识) 客户可以告诉用户归还给定的书(通过书名标识) 客户可以告诉顾客借一本书 用户类应该为每本书使用一个单独的实例变量(总共三个)。 这些变量中的每一个最初都是空的。当
- 客户机可以实例化具有标题和作者的书籍
- 客户可以检查但不能修改书名或作者
- 客户可以向客户询问其在哪里借了给定的书(以书名标识)
- 客户可以告诉用户归还给定的书(通过书名标识)
- 客户可以告诉顾客借一本书
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”,这意味着不返回任何书籍,而是给我一个无效的输入输出 nextLine吃掉换行符。nextInt将其保留在输入缓冲区中,下一个读线立即终止 快速修复:对所有内容使用readLine,然后从string read解析int。您在代码的第71行使用
nextInt()
,这将获得用户提供的整数答案。然后使用nextLine()
which。跳过的输入仅是上一次调用nextInt()
中的换行符(它不读取整行,只读取int)
您可以在需要输入之前调用一次
input.nextLine()
,或者使用nextLine()
而不是nextInt()
并将字符串转换为整数值,从而跳过此操作。您只需转到下一行即可。
input.nextLine() 您可以使用
nextInt()
使输入停止并等待响应 似乎nextInt()。使用此功能,您将能够放大代码并确定问题所在的位置;如果有必要,你可以问一个更具体的问题。欢迎来到StackOverflow。请不要发布指向整个代码的链接,而是发布您需要帮助的代码片段(异常、编译错误等)。我复制粘贴了您的pastebin
代码,创建了空的Patron
和Book
类,并等待用户输入。在调用input.nextLine()
后,当试图说“否”以返回我添加的书籍时,它只提供“无效选项”,并且它的工作方式就像一个符咒。谢谢请不要在已经完全正确回答的老问题上添加简短的答案!