是否可以在不使用扫描器类的情况下在 Java 中创建菜单?因此,一旦按下字母或数字,它就会在不按回车键的情况下运行代码。
不,这是不可能的,至少在Java 8之前是这样。在标准 JDK API 中,有一个隐式缓冲区,只有在用户按 Enter 时(或者某些管道或文件重定向执行等效操作)时,该缓冲区才可用于您的程序。
有一些库可以解决此问题,但据我所知,它们都需要在内部使用 JNI。两个例子:
- 斯卡拉·
- 灯笼
我过去曾成功地使用过JLine。
原则上:
public class PressAKey {
public static void main(String[] args) throws IOException {
int x = System.in.read();
System.out.println("You pressed " + (char) x);
}
}
在实践中,这是行不通的 - 正如@Akira指出的那样,有一个缓冲区在按下 Enter 之前不会刷新。