作为一种自我实践,我正在用 Java 制作一个通过控制台执行 I/O 的BF解释器。在大多数情况下,这很好,但是,正如您可能知道的那样,BF 一次输入一个字符,包括换行符。这意味着据我所知,标准控制台输入库不起作用,因为它们接收整个字符串,然后在最后要求返回。我想,
接受下一个适合 a 的击键char
而不在键入时打印它。因此,当 BF 要求输入并且您输入 时a
,它会接收 ,a
但不会在控制台中显示它,除非 BF 程序a
稍后自行输出。
我怎样才能做到这一点?
作为一种自我实践,我正在用 Java 制作一个通过控制台执行 I/O 的BF解释器。在大多数情况下,这很好,但是,正如您可能知道的那样,BF 一次输入一个字符,包括换行符。这意味着据我所知,标准控制台输入库不起作用,因为它们接收整个字符串,然后在最后要求返回。我想,
接受下一个适合 a 的击键char
而不在键入时打印它。因此,当 BF 要求输入并且您输入 时a
,它会接收 ,a
但不会在控制台中显示它,除非 BF 程序a
稍后自行输出。
我怎样才能做到这一点?
我建议使用 JLine http://jline.sourceforge.net
该类Terminal
有一个disableEcho()
方法来做你想做的事。
使用框架中的 textArea 和 keyListener 编写您自己的控制台输出/输入
签出java.io.Console
- 您可以使用readPassword()
. 但是它仍然是面向行的,所以在用户按下 Enter 之前你不会收到任何东西。另一个可能的缺点是可能没有控制台 - 取决于应用程序的启动方式。