日期:2014-05-20  浏览次数:20594 次

System.in.read()问题
Java code

public class A {
public static void main(String[] args) {
    try{
        for(int i=0;i<10;i++)
        {
            System.out.println("i的值为:"+i);
            System.out.println("输出为:"+System.in.read());
        }
    }catch(Exception e){
        
    }
}
}



这是我刚才写的一个测试System.in.read()类、
发现一个问题 当第一次从键盘输入一个字符是 正常 
但是i=1 也就是又该输入的时候 出了问题
System.in.read()不用键盘输入 自动就 得到了个 unicode为 13的值就自动跳过去
i=2的时候 还是一样情况 得到 10自动跳过去

一直到 i=3的时候 又被控制台截获 才可以从控制台输入

总体讲就是 输入 1 得到 49
但是 如果你后边还有两个System.in.read() 会自动得到 13,和 10 两个值不用你输入

这是什么原因?

------解决方案--------------------
输入1==输入1 +\r\n所有就回出现你说的那样问题。回车也被接收了(\r\n)
------解决方案--------------------
换行回车都会被放到缓冲里面。每次读取回被读取到一个字符。

如果想要你的要得效果可以br = BufferedReader(System.in)

然后br.readline();