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

时间:2014-01-12 00:41:52

标签: java string printing console

第一次提出问题。

我想要的是每次用户按下控制台上的某个键时确定某些动作发生的方式。就像,当他输入一个单词时,我希望在每个按键上输入一个由他已经按下的所有按键形成的字符串,连接到新按下的按键。如:

您输入了:a

B'/ P>

您输入了:ab

C

您键入:abc

d

您键入:abcd

ë

您键入: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);
    }
}

我得到了我想要的东西,但是在我按下回车键后,而不是按下控制台上的每个按键:

foobar的

您输入了:f

您键入:fo

你键入:foo

您键入:foob

你打字:fooba

您键入:foobar

提前致谢。

1 个答案:

答案 0 :(得分:2)

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

看看Here