Java 读取字符时,For循环增加3

Java 读取字符时,For循环增加3,java,loops,for-loop,try-catch,Java,Loops,For Loop,Try Catch,谁能告诉我为什么每次我读一个字符时for循环的bellow都会增加3 public class Test { public static void main(String[] args) { char ch1=' '; for(int i = 0 ; i < 5; i++) { try { ch1 = (char) System.in.

谁能告诉我为什么每次我读一个字符时for循环的bellow都会增加3

         public class Test {
              public static void main(String[] args) {
                 char ch1=' ';
                 for(int i = 0 ; i < 5; i++) {
                     try { ch1 = (char) System.in.read(); 
                     } catch(Exception e) {}
                     System.out.println(i);
                 }
              }
         }
公共类测试{
公共静态void main(字符串[]args){
char ch1='';
对于(int i=0;i<5;i++){
尝试{ch1=(char)System.in.read();
}捕获(例外e){}
系统输出打印LN(i);
}
}
}

终端一次只能读取整行数据。按enter键时,它将发送标记行结束的回车行进纸顺序(2个字符)。您可以通过如下方式将其包装在
do
循环中,将其过滤掉:

for (int i = 0 ; i < 5; i++) {
    do {
        try {
            ch1 = (char)System.in.read();
        } catch (Exception e) {}
    } while (ch1 == '\n' || ch1 == '\r');
    System.out.println(i);
}
for(int i=0;i<5;i++){
做{
试一试{
ch1=(char)System.in.read();
}捕获(例外e){}
}而(ch1='\n'| | ch1=='\r');
系统输出打印LN(i);
}

请注意,如果您从
系统中创建一个。在
中,它具有获取整行输入的方法以及比处理单个字节更容易使用的其他方法。

您可以发布一个可复制的示例吗?这不会显示您描述的行为: