1

我有一个像这样的缓冲阅读器:

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   

正如你所看到的,每一行都被跳过。

4

3 回答 3

0

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

于 2016-11-28T18:30:31.713 回答
0
BufferedReader br = BufferedReader(new FileReader(("Output/pointsSorted.txt")));

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

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

你可能想要这个:

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

    String line;
    while((line = br.readLine()) != null){
        System.out.println(line);
    }
    br.close();
}
于 2016-11-28T18:31:16.473 回答
0

您调用readline()了两次 - 一次在while's 条件内(然后忽略结果),一次在其体内。只需删除其中一个电话,您应该就可以了。例如:

String line;
while ((line = br.readLine()) != null) {
    System.out.println(line); // Use the value of line populated in the while's condition
}
br.close();
于 2016-11-28T18:31:22.187 回答