我必須編寫一個程序來估計一個人爲了贏得獎品而必須喝的飲料的數量,如果有一個五分之一的機會帽將有獎。用戶輸入開瓶測試的次數,並且程序輸出用於贏得獎品的平均瓶數,並且在單獨的文本文件中存儲每次單獨試用贏得的飲品數量。JAVA在輸入I/O作業中的錯誤(初學者)
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Scanner;
import java.io.File;
public class BottleCapPrize2
{
public static void main (String[] args) throws IOException
{
Scanner in = new Scanner (System.in);
System.out.print("Number of Trials: ");
int trials = in.nextInt();
int trialNumber = 0;
int total = 0;
int average = 0;
for (int x = 0; x < trials; x++){
int counter = 0;
double randNum = Math.random();
trialNumber++;
while (randNum < 0.8){
counter ++;
randNum = Math.random();
}
total += counter;
average = (int) total/trials;
PrintWriter outFile = new PrintWriter (new File ("bottleCap.txt"));
outFile.println("Trial " + trialNumber + " took " + counter + " drinks.");
outFile.close();
if (trialNumber == trials){
System.out.println("The average was " + average);
}
}
}
輸出到編譯器的程序部分工作正常,但輸出到文本文件(bottleCap.txt)的部分無法正常工作。
當我打開bottleCap.txt時,沿着 「試驗1喝了3杯酒」,「試用2喝了5杯」,......「試驗10喝了9杯酒。」應該寫出來。相反,我只能看到程序最後一次試用的輸出。 (如果用戶輸入了10次試驗,那麼文本文件僅寫入「試驗10需要3次飲料」,試驗1-9沒有任何記載)。
有人可以幫我找出問題嗎?我已經看了幾個小時了,而且還沒有進一步的瞭解。謝謝!
**謝謝大家的幫助!這非常有幫助! **
檢查你的for循環塊。 – OldProgrammer 2014-10-27 01:53:23
將outFile的創建和關閉移動到循環之外。如果沒有另行指定,則新開啓的檔案會在開始時開始寫入。打開文件也需要時間。 – Oncaphillis 2014-10-27 01:58:07
@ jinjin11我的問題是,你的數據**覆蓋**對方? – 2014-10-27 02:01:40