当用户在Java中键入单个字符时,是否有一种简单的方法可从控制台读取它?可能吗?我尝试了这些方法,但是它们都在等待用户按Enter键:
char tmp = (char) System.in.read(); char tmp = (char) new InputStreamReader(System.in).read (); char tmp = (char) System.console().reader().read(); // Java 6
我开始认为System.in在按下Enter之前不知道用户输入。
您要做的是将控制台置于“原始”模式(绕过行编辑且无需输入键),而不是“经烹煮”模式(需要输入键进行行编辑)。在UNIX系统上,“ stty”命令可以更改模式。
现在,关于Java …参见Python和Java中的非阻塞控制台输入。摘抄:
如果您的程序必须基于控制台,则必须将终端从行模式切换到字符模式,并记住在程序退出之前将其还原。没有跨操作系统的可移植方法。
建议之一是使用JNI。同样,这不是很容易移植。与上面的帖子一样,该线程结尾处的另一个建议是考虑使用jCurses。