当前位置: 首页 > 面试题库 >

代码不等待用户输入吗?

姜晨
2023-03-14
问题内容

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

图书馆的顾客最多可以借三本书。因此,一个顾客有一个名字和最多三本书。一本书有作者和书名。设计并实现两个类,分别是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”,这意味着不返回任何书,而是给了我无效的输入输出。


问题答案:

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

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



 类似资料:
  • 我正在编写一个棋盘游戏,我需要检查玩家正在移动的敌人并提示进行攻击。但是,由于游戏是如何制作的,移动方法是在JavaFX应用程序线程上调用的,我希望能够提示用户是否要与敌人战斗。 我的对话框工作正常,使用等待和通知,在主线程上不工作,会导致程序崩溃,有人知道如何暂停这个线程的执行,直到用户单击其中一个按钮。 我为描述道歉,太晚了。 检查敌人的方法该方法检查敌人,如果用户选择是,则返回敌人。它运行在

  • 问题内容: 我正在使用Java的扫描仪读取用户输入。如果我仅使用nextLine一次,那就可以了。使用两个nextLine时,第一个不会等待用户输入字符串(第二个会输入)。 输出: X:Y :(等待输入) 我的密码 任何想法为什么会发生这种情况?谢谢 问题答案: 您可能像以前那样调用方法。这样的程序是这样的: 演示您所看到的行为。 问题是不消耗,因此下一个调用将消耗它,然后等待读取的输入。 您需要

  • 问题内容: 我正在尝试制作一个暂停用户输入的简单命令。我认为在Bash脚本中它将很有用。 这是我的代码: 它甚至不会暂停供用户输入。 我之前尝试过使用getch()(ncurses)。发生的是,屏幕变黑了,当我按下一个键时,它又回到了原来的屏幕上,我看到了: 这是我想要的。但是我想要的只是DOS / Windows 中的命令(我使用Linux)。 问题答案: 从GNU C库手册: 函数:char

  • 我正在尝试为我的频道制作IRC机器人。我希望机器人能够从控制台接收命令。为了让主循环等待用户输入内容,我添加了循环: 这似乎不起作用。我听说过BufferedReader,但我从未使用过,也不确定这是否能解决我的问题。

  • null 所以我面临一个问题,如果打开,等待输入,如何停止它?我尝试过将它放在线程中并或使用作为标志,但它并没有停止

  • 问题内容: 我以前有几种方法用于接受用户输入,并将其作为某种数据类型返回给调用它的方法。我在以前的项目中使用过这些方法或它们的变体。 我采用了用于字符串的方法来选择给定的第一个字符并返回它,以便可以在菜单中使用它。每次我启动该应用程序时,都会出现主菜单,并等待用户输入。收到此输入后,程序将连续循环直到停止。这是我捕获字符的方法: 由于try / catch块,代码循环,因为scan.nextLin