日期:2014-05-16  浏览次数:20713 次

关于标准输入的诡异问题的继续讨论。
程序从标准输入流读取数据到input字符串。
 第一行的数字表示下面还有几行。
 比如输入3回车
 然后再随便输入3行:
1
 2
 3,那么output内容为
"3
 1
 2
 3"
但是我的程序读不到第3行,就执行输出的代码,中间有空行。

而且行越多,跳过的就越多。

我的代码如下:
 
import java.io.*;
  
public class stdinTestApp1 {
     
    public static void main(String[] args) throws Exception {
        BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in)); 
        String input = stdin.readLine();
        int datanum = Integer.parseInt(input);
        input += "\r\n"; // 已经加上这一行
        for (int i = 0; i < datanum; i++)
        {
            String curline = stdin.readLine();
            input = input + curline;
            if (i != datanum - 1) input = input + "\r\n";
        }
        System.out.println("\r\n===output===\r\n" + input);
    }
}


环境:JDK 1.7,JCreator 4.5,Windows Server 2003。

我们再测试一个用例:
10
a
abc
123
1234
1234567
a b c
abc
dfsdf
qqq
sss
依次输入以上各行,但是不等输入完,就开始输出,而且输出的有空行。
------解决方案--------------------
未发现问题。你看你是不是中文下空格,或者是不是回车多次造成的。