2016-11-28 58 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我的壞。本來可以避免的。謝謝! – 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的條件內(然後忽略結果),並一次。只要刪除一個電話,你應該沒問題。例如:

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