2012-11-01 136 views
0

我一直有這個部分我的任務有問題。該問題要求在另一個文件中寫入平均值,但是當我在其他文件中看到結果時,平均值顯示一個問號,其中意味着答案應該是。我遇到的唯一問題是while循環內的代碼其他所有內容似乎都在工作。任何人都可以告訴我什麼我做錯了嗎?我在做這個代碼在Java中做錯了什麼?

File file = new File (filename); 
Scanner inputFile = new Scanner (filename); 

filename = inputFile.nextLine(); 


while(inputFile.hasNext()) 
{ 
    double number = inputFile.nextDouble(); 
    sum = number + sum; 
    count++; 
    line = inputFile.nextDouble(); 
} 
inputFile.close(); 
mean = sum/count; 
+0

無論你正在讀取值的兩次,但拋出一個... –

+0

我很好奇你爲什麼把最後一行'line = inputFile.nextDouble()'在那裏。我經常在校園實驗室看到這一點。任何猜測? –

回答

1
double number = inputFile.nextDouble(); 
sum = number + sum; 
count++; 
line = inputFile.nextDouble(); 

您所呼叫的nextDouble兩次,只考慮到第一個呼叫,這意味着你跳過值。這就是爲什麼你的總和,因此意思是不正確的。

刪除最後一行:line = inputFile.nextDouble();

+1

他可能還想在循環外部聲明數字變量,然後在循環中設置它以便進行良好的練習:) – WilliamShatner

+0

@WilliamShatner,我同意 – rizalp1

+0

@WilliamShatner爲什麼?因爲它代表循環以外的數字是無用的。 –

0

您在循環中呼叫nextDouble()兩次,因此只會讀取第二個數字。