2016-11-28 7 views
1

у меня есть 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 

, как вы можете видеть каждый второй строки пропускается.

+2

Каждый 'readLine' потребляет одну строку, включая вызов в состоянии' while', поэтому вы делаете это дважды на каждой итерации, но печать получается только из второго вызова. – Pshemo

ответ

0

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

+0

oops my bad. чего можно было бы избежать. благодаря! – Skalrayi

0

Линия 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(); 
} 
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(); 

 Смежные вопросы

  • Нет связанных вопросов^_^