Java 一次读取控制台上按下的每个键



第一次提问。

我想要的是一种方式,每次用户在控制台上按下某个键时都会发生某些操作。就像,当他输入一个单词时,我希望每次按下一个由他已经按下的所有键组成的字符串被打印出来,连接到新按下的键。如:

一个

您键入:a

您键入:ab

C

您输入: abc

d

您键入:abcd

e

您输入:abcde

我正在尝试使用以下代码执行此操作:

try (BufferedReader input = new BufferedReader(
                            new InputStreamReader(System.in, "UTF-8"))) {
    char c = 0;
    String s = "";
    while( (c = (char) input.read() ) != 13) {
        s += c;
        System.out.println("You typed: " + s);
    }
}

得到了我想要的,但就在我按下 Enter 键之后,而不是在控制台上按下的每个键:

福巴

您键入:f

您键入:fo

您键入:foo

您键入:foob

您键入: 福巴

您输入: foobar

提前谢谢。

好像有人问过这个问题。看起来共识是修改 System.in 在不同平台上是不同的,为了做你想做的事情,你需要将终端从"行"模式更改为"字符"模式。

看看这里。

最新更新