当不要求输入时,控制台中会显示输入的文本,我该如何停止呢?

时间:2019-11-18 04:35:26

标签: java eclipse console

我正在尝试在Eclipse中使用Java制作一个简单的基于文本的游戏,并且一切正常,直到它开始随机允许您在程序中的任何位置键入内容,而不仅仅是在请求{ {1}}。我发现这真的很奇怪,并且做了我可以解决的事情,但是没有任何效果,所以现在我回到了第一广场。当我运行程序时,我可以在控制台中的任何位置键入内容,它实际上会显示出来,我不希望发生这种情况。这是我的前几行代码,显然这里没有扫描程序,因此我不明白可能是什么问题。

这在我所有的项目中都在发生,我真的很想重新开始编写代码。

Scanner

1 个答案:

答案 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);