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

为什么简单Java应用程序中的这个简单计数器会增加两倍?,java,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:");

我尝试的是简单地输入一个字符,然后点击回车键

我将看到:

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');
    }
}

\n
也是一个字符,每次按enter键都会添加一个字符。例如,使用<代码> NestLoin()/<代码>,或在看到空白字符时对其进行筛选(测试字符,如果它是空字符,则忽略它)。

当您键入Enter时,代码接收换行符。这就是为什么在

a1
b3
之后出现一个空行的原因

如果要筛选出换行符,请检查
c
中的
'\n'

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

Enter chars:
a
a1

2
b
b3

4