这次我有一个非常蹩脚的问题,这个问题很完美,但现在却没有:
BufferedReader br = new BufferedReader(new InputStreamReader(
System.in));
while (br.readLine() != null) {
System.out.println(br.readLine());
}
输入文件:
1
2
3
4
5
6
7
8
9
在命令行中:$ java myprogram< inputfile中
上述代码的结果是:
2
4
6
8
null
但预期输出应与输入文件相同!
我哪里错了?!
答案 0 :(得分:7)
你不应该在每个循环中调用readLine()
两次。
每次调用它时,它都会读取一个新行。打印每个电话的结果:
while (true) {
String line = br.readLine();
if (line == null)
break;
System.out.println(line);
}
答案 1 :(得分:4)
您正在两次调用br.readLine()。它在while条件下调用它一次,然后实际打印出来。这就是为什么你只打印每一行。
编辑:您的情况应该是:
while(br.ready()){
System.out.println(br.readLine());
}
答案 2 :(得分:2)
您可以修改代码,如:
String str=null; while ((str=br.readLine())!= null) { System.out.println(str); }
答案 3 :(得分:0)
FileReader f = new FileReader(file);
BufferedReader bufferReader = new BufferedReader(f);
String line;
// Read file line by line and print on the console
while ((line = bufferReader.readLine()) != null) {
System.out.println(line);
}