Java 使用System.in.read()时打印附加行

Java 使用System.in.read()时打印附加行,java,Java,努力学习java。这是一个简单的函数,但是我得到的结果是 public class DWDemo { public static void main(String args[]) throws java.io.IOException { char ch; do { System.out.print("Press a key followed by ENTER: "); ch = (char) System

努力学习java。这是一个简单的函数,但是我得到的结果是

public class DWDemo {
    public static void main(String args[]) throws java.io.IOException {

        char ch;

        do {
            System.out.print("Press a key followed by ENTER: ");
            ch = (char) System.in.read();
        } while (ch != 'S');
    }
}
系统将打印“在Intellij中按一个键,然后按Enter:”两次,在eclipse中打印三次


请帮忙

因为您正在从控制台读取字符。每个“回车”='\n'将被视为一个字符。那么你的
(char)System.in.read()

取2个字符并循环,它读取的每个字符和“回车”都会递增。

按一个键,然后按ENTER
在上面的代码中看不到这一点吗?是的,我只是不明白在输入一个假值后,它会打印两次。似乎您应该从命令行运行它。同意霍比特人!!我同意@YoungHobbit,但是如果你想要换行符
\n
,那是因为实际字符后面有一个新的换行符
。我建议您使用标准文本阅读。后续问题。为什么我使用Intellij打印两次,在Eclipse上尝试三次?
Press a key followed by ENTER: D
Press a key followed by ENTER: Press a key followed by ENTER: G
Press a key followed by ENTER: Press a key followed by ENTER: E
Press a key followed by ENTER: Press a key followed by ENTER: F
Press a key followed by ENTER: Press a key followed by ENTER: S