我正在尝试在Eclipse中使用Java制作一个简单的基于文本的游戏,并且一切正常,直到它开始随机允许您在程序中的任何位置键入内容,而不仅仅是在请求{ {1}}。我发现这真的很奇怪,并且做了我可以解决的事情,但是没有任何效果,所以现在我回到了第一广场。当我运行程序时,我可以在控制台中的任何位置键入内容,它实际上会显示出来,我不希望发生这种情况。这是我的前几行代码,显然这里没有扫描程序,因此我不明白可能是什么问题。
这在我所有的项目中都在发生,我真的很想重新开始编写代码。
Scanner
答案 0 :(得分:0)
这是大多数控制台的正常行为;它不是来自Java或您的Java代码。当您输入控制台时,它将回显您输入的字符。
确实存在关闭回声的方法。 Console.readPassword()
会将其关闭,直到您按下 Enter 。不幸的是,Console
并没有公开仅在要求输入一行时直接打开和关闭回显的功能。
JLine库可以使用Terminal.echo()
打开和关闭它:
Terminal terminal = TerminalBuilder.terminal();
terminal.echo(false);
是否可行,可能取决于程序的运行方式;我还没有从Eclipse尝试过。
当我尝试此操作时,回声关闭时我键入的内容将在下次打开回声时出现。再次,正常控制台行为。如果您要输入控制台,它将一直在听您讲话。如果您不想要,我发现它周围有一个骇客,它至少可以工作一到两次:
// Skip over anything that's been typed in already.
// Re-implementing skip() with read(), because skip() can throw an "Illegal seek"
// error that read() won't.
System.in.read(new byte[System.in.available()]);
terminal.echo(true);