java - 如何从 Java 控制台读取单个字符(当用户键入时)?

标签 java input console

当用户在 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 之前并不知道用户输入。

最佳答案

您想要做的是将控制台置于“原始”模式(绕过行编辑并且不需要 Enter 键),而不是“cooked”模式(需要使用 Enter 键进行行编辑。)在 UNIX 系统上,'stty ' 命令可以改变模式。

现在,关于 Java...请参阅 Non blocking console input in Python and Java 。摘录:

If your program must be console based, you have to switch your terminal out of line mode into character mode, and remember to restore it before your program quits. There is no portable way to do this across operating systems.

建议之一是使用 JNI。再说一遍,这不是很便携。线程末尾的另一个建议与上面的帖子相同,是查看使用 jCurses .

关于java - 如何从 Java 控制台读取单个字符(当用户键入时)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57657570/

相关文章:

java:字符串数组列表并删除

c# - Cisco ASA 5505 系统重新加载(重新引导/重新启动)

Java流密码(带有输入和输出txt文件)输出随机字符不完整的解密字符串

Python同时检查来自控制台和串行的输入?

c++ - Visual Studio .exe 文件打开并立即关闭

java - 有没有办法保存包含节点和边的图形对象?

C++: ifstream::getline 问题

检查用户是否输入了 int - C

java - 使用原始数组在 Java 中创建排行榜

java - 具有客户端身份验证的 jetty ssl 抛出空证书异常