Почему мой буферный читатель читает только каждую вторую строку?

У меня есть буферизованный читатель, как это:

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   

как видите, каждая вторая строка пропущена.

3 ответа

Потому что ты печатаешь br.readLine() вместо lineпоэтому, читая 2 строки за каждую итерацию цикла (но печатая только одну).

Ты звонишь readline() дважды - один раз внутри whileсостояние (а затем игнорируя результат) и один раз внутри его тела. Просто удалите один из вызовов, и вы должны быть в порядке. Например:

String line;
while ((line = br.readLine()) != null) {
    System.out.println(line); // Use the value of line populated in the while's condition
}
br.close();
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();
}
Другие вопросы по тегам