Java 为什么我的bufferedreader只读取第二行?

Java 为什么我的bufferedreader只读取第二行?,java,list,reader,buffered,Java,List,Reader,Buffered,我有一个这样的bufferedreader: BufferedReader br = BufferedReader(new FileReader(("Output/pointsSorted.txt"))); String line; while((line = br.readLine()) != null){ System.out.println(br.readLine()); } br.close(); } 但它只读第二行,我不明白为什么 这

我有一个这样的bufferedreader:

BufferedReader br = BufferedReader(new FileReader(("Output/pointsSorted.txt")));

    String line;
    while((line = br.readLine()) != null){
        System.out.println(br.readLine());
    }
    br.close();
}
但它只读第二行,我不明白为什么

这是读卡器读取的文件:

bendsan: 1000
gotr_gotey: 87
lordelain: 87
nightbot: 87
vellsain: 87
r3l10n: 86
skalrayi: 85
brom13: 84
llecrezzef: 84
cloudinger: 74
littleangelswing: 60
n3belmacht: 43
mrscandy_: 32
sluckzz: 31
elboy717: 30
assassinenfan: 18
msurai: 18
woischdesdu: 16
daspaddy: 14
sirfullmetal: 10
daranun: 1
这是输出:

gotr_gotey: 87
nightbot: 87
r3l10n: 86
brom13: 84
cloudinger: 74
n3belmacht: 43
sluckzz: 31
assassinenfan: 18
woischdesdu: 16
sirfullmetal: 10   

正如您所见,每第二行都会被跳过。

因为您打印的是
br.readLine()
而不是
line
,因此循环的每个迭代都会读取2行(但只打印一行)。

因为您打印的是
br.readLine()
而不是
line
,因此,循环每次迭代读取2行(但只打印一行)

第1行从文件中读取一行并将其存储在
Line
中。然后第2行从文件中读取新行并输出它。因此,第一行被读入
,然后第二行被打印出来,然后第三行被读入
,然后第四行被打印出来,依此类推

你可能想要这个:

BufferedReader br = BufferedReader(new FileReader(("Output/pointsSorted.txt")));

    String line;
    while((line = br.readLine()) != null){
        System.out.println(line);
    }
    br.close();
}
第1行从文件中读取一行并将其存储在
Line
中。然后第2行从文件中读取新行并输出它。因此,第一行被读入
,然后第二行被打印出来,然后第三行被读入
,然后第四行被打印出来,依此类推

你可能想要这个:

BufferedReader br = BufferedReader(new FileReader(("Output/pointsSorted.txt")));

    String line;
    while((line = br.readLine()) != null){
        System.out.println(line);
    }
    br.close();
}

您将调用
readline()
两次,一次在
中调用,另一次在
的条件中调用(然后忽略结果),一次在其主体中调用。只需删除其中一个电话,您就可以了。例如:

String line;
while ((line = br.readLine()) != null) {
    System.out.println(line); // Use the value of line populated in the while's condition
}
br.close();

您将调用
readline()
两次,一次在
中调用,另一次在
的条件中调用(然后忽略结果),一次在其主体中调用。只需删除其中一个电话,您就可以了。例如:

String line;
while ((line = br.readLine()) != null) {
    System.out.println(line); // Use the value of line populated in the while's condition
}
br.close();

每个
readLine
占用一行,包括在
条件下调用
,因此在每次迭代中执行两次,但只打印第二次调用的结果。每个
readLine
占用一行,在
条件下包含调用
,因此在每次迭代中都要执行两次,但只打印第二次调用的结果。哎呀,我的问题。这本来是可以避免的。谢谢哎呀,我的错。这本来是可以避免的。谢谢