Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 代码不';不要等待用户输入?_Java_Input_Console - Fatal编程技术网

Java 代码不';不要等待用户输入?

Java 代码不';不要等待用户输入?,java,input,console,Java,Input,Console,我必须为我的计算机科学课做一个项目。问题是: 图书馆的读者最多可以借三本书。因此,一位赞助人有一个名字,最多有三本书。一本书有作者和书名。设计并实现两个类,Patron和Book,以表示这些对象和以下行为: 客户机可以实例化具有标题和作者的书籍 客户可以检查但不能修改书名或作者 客户可以向客户询问其在哪里借了给定的书(以书名标识) 客户可以告诉用户归还给定的书(通过书名标识) 客户可以告诉顾客借一本书 用户类应该为每本书使用一个单独的实例变量(总共三个)。 这些变量中的每一个最初都是空的。当

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

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

  • 客户机可以实例化具有标题和作者的书籍
  • 客户可以检查但不能修改书名或作者
  • 客户可以向客户询问其在哪里借了给定的书(以书名标识)
  • 客户可以告诉用户归还给定的书(通过书名标识)
  • 客户可以告诉顾客借一本书
用户类应该为每本书使用一个单独的实例变量(总共三个)。 这些变量中的每一个最初都是空的。当一本书被借阅时,用户会寻找一个非空的变量。如果未找到此类变量,则该方法返回false。如果发现空变量,则将其重置为新书,并且该方法返回true。类似的考虑也适用于其他方法。使用aString.equals(aString)方法比较两个字符串是否相等。确保为您的类包含适当的toString方法,并使用测试程序对它们进行测试

下面是我的
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()
后,当试图说“否”以返回我添加的书籍时,它只提供“无效选项”,并且它的工作方式就像一个符咒。谢谢请不要在已经完全正确回答的老问题上添加简短的答案!