一种创建不带扫描程序类的 Java 菜单的方法



是否可以在不使用扫描器类的情况下在 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 之前不会刷新。

最新更新