为什么简单Java应用程序中的这个简单计数器会递增两次?

时间:2014-09-27 17:48:54

标签: java

public class MyTestClass {
    public static void main(String[] args) throws Exception {
        char c;
        InputStreamReader reader = (new InputStreamReader(System.in));
        System.out.println("Enter chars:");
        OutputStream outputStream = new BufferedOutputStream(System.out);
        int counter = 0;
        do {
            counter++;
            c = (char) reader.read();
            outputStream.write(c);
            outputStream.flush();
            System.out.println(counter);
        } while (c != 'q');
    }
}

我正在尝试的是简单输入一个角色然后点击进入..

我将看到的是:

Enter chars:
a
a1

2
b
b3

4

3 个答案:

答案 0 :(得分:4)

\n也是一个角色,每次点击输入都会添加一个角色。例如,使用nextLine(),或者在看到它时过滤空白字符(测试字符,如果是空白字符则忽略它)。

答案 1 :(得分:4)

当您按Enter键时,您的代码会收到换行符。这就是为什么您在a1b3之后看到一个空行。

如果您想要过滤换行,请检查c '\n'

答案 2 :(得分:2)

您的"输入"字符也被视为有效的输入字符。您可以使用条件过滤器将回车或减量计数值每次加1。