代码并不等待用户输入?(Code doesn't wait for user input?)

2019-06-25 09:06发布

我得为我的计算机科学类做的一个项目。 问题是:

图书馆的赞助人最多可借三本书。 的一位顾客,因此,有一个名字和多达三本书。 一本书有一个作者和标题。 设计并实现了两班,赞助人和书,以表示这些对象和以下行为:

  • 客户端可以实例一本书标题和作者
  • 客户可以检查,但不能修改书名或作者
  • 客户可以要求wthere借入一个给定的书(由标题标识)赞助人。
  • 客户端可以告诉顾客返回给定书(按标题标识)。
  • 客户端可以告诉顾客借一个给定的书。

守护神类应该使用一个单独的实例变量,每本书(共三层)。 每一个变量是最初空。 当一本书是借来的,顾客寻找一个变量不为空。 如果没有找到这样的变量,该方法返回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”,这意味着没有返回本书,而是给了我一个无效的输入输出。

Answer 1:

您可以使用nextInt()在你的代码,它得到整数解答用户提供了71行。 然后你使用nextLine()这此扫描器执行当前行,并返回跳过的输入信息。 。 被跳过的输入是只能从前面的换行符nextInt()调用(它不读取整条生产线仅INT)。

您可以通过调用跳过此input.nextLine()你想输入之前一次,或使用nextLine()代替nextInt()和字符串转换成整数值。



Answer 2:

nextLine吃换行符。 nextInt它保留在输入缓冲区,而接下来的readLine立即终止。

快速修复:使用输入行的一切,然后解析从字符串读取的int值。



Answer 3:

你只需要进入到下一行。 input.nextLine();



Answer 4:

您可以使用nextInt(); 造成输入停下来等待响应。



文章来源: Code doesn't wait for user input?