2017-04-14 55 views
0

我的任務需要我做一個簡單的數學遊戲,它會產生隨機數學問題。該程序必須在文本文件中記錄正確的金額和金額不正確。它還必須更新現有文件的統計信息,而不是覆蓋它們。如何更新文本文件的內容

這是我正在創建的每個文件:

try { 
    writer = new FileWriter(userName + " Stats.txt", true); 
    outputfile = new PrintWriter (writer); 
} catch (IOException e) { 
} 

這裏是正在寫入文件:

public static void saveStats() { 

    outputfile.println(); 
    outputfile.println("Correct Answers:"+ correct); 
    outputfile.println("Incorrect Answers:" + incorrect); 

    if (money > 0) { 
     outputfile.printf("Earnings: $%.2f", money); 
     outputfile.println(); 
    } 
    else { 
     float moneyNegative = Math.abs(money); 
     outputfile.printf("Earnings: -$%.2f", moneyNegative); 
     outputfile.println(); 
    } 
    outputfile.flush(); 
} 

這裏是文本文件的樣本輸出退出程序後:

Correct Answers:0 
Incorrect Answers:1 
Earnings: -$0.03 

正確,不正確和金錢都是全局變量並且被初始化t o 0.如果我重新啓動程序,我的文件將仍然存在,但正確答案,錯誤答案和收入的值將被覆蓋,或者文件的新條目將被添加。我只是想更新它。

這裏是我的所有代碼:https://pastebin.com/1Cmg5Rt8

回答

0

你試過先獲取原文,然後寫它,你開始寫你需要什麼之前?

基本上,你從你的文件的輸入開頭

Scanner s = new Scanner(new File("FileName.txt")); 

然後,您可以遍歷並寫入文件。

while(s.hasNextLine()) 
{ 
    outputfile.println(s.nextLine()); 
} 

之後,你有你以前所有改寫成文本文件,你可以運行你的代碼的其餘部分,而不必重寫的信息。

此外,而不是嘗試趕上,你可以拋出IOException

+0

我認爲你的代碼只是將舊文件複製到新的。實際的解決方案是使用'Scanner.nextInt()'和'Scanner.nextDouble()'(或類似的)函數從舊文件中檢索舊統計數據。 – bleistift2

+0

完全是一個好方法。我不知道用戶是否想要更改變量,但可以更改此答案以允許某個人更改文件中找到的變量。 – Raheel138