2017-04-14 45 views
0

這是我的代碼:https://pastebin.com/1Cmg5Rt8如何更新現有文本文件的編號?

該程序詢問用戶的名字。

然後它會生成隨機數學問題,並計算正確的答案和不正確的答案。

正確答案的用戶獎勵0.05美元,錯誤答案的罰款0.03美元。

以上都已完成。

我堅持從這裏開始:用自己的名字創建

的文件。

他們得到正確/不正確答案的數量被記錄到一個文本文件。

如果其名稱下的文件已經存在,我必須將其結果與文件結果結合起來。現有文本文件的

例子:

Correct answers: 1 

Incorrect answers: 0 

Earnings: $0.05 

如果用戶再次運行程序,並得到1個正確答案,它必須這樣更新:

Correct answers: 2 

Incorrect answers: 0 

Earnings: $0.10 

目前,而不是更新,它正在被覆蓋。 如果我一開始選擇節目的統計,這是結果(它使用初始化值):

Correct answers:0 

Incorrect answers: 0 

Earnings: $0.00 

我花了幾個小時試圖弄清楚這一點。我拒絕睡覺,直到我解決這個問題。有人請幫助我。我將不勝感激。

+0

所以首先讀取現有的文件,更新的統計數據在內存中,然後寫出來的新文件。 –

+0

@JonSkeet不幸的是,我不知道如何編寫它。我早些時候嘗試過。沒有那麼好...... – Navi4458

+0

提示:在你喜歡的搜索引擎中搜索'java寫入文本文件'。 – StephaneM

回答

0

,需要在/前/你檢索統計,即你的主要方法應該是這樣的讀取名稱:

public static void main(String[] args) { 
    validateCreditsResponse(); 
    name(); 
    retrieveStats(); 
    menu(); 
    saveStats(); 
} 

而且,在這種方法中,你也需要像你輸出一個println做在 '其他' 分支:

if (money > 0) { 
     outputfile.printf("Earnings: $%.2f", money); 
     // Add outputfile.println(); 
    } 

最後,在這個方法中,你需要在數據讀取

//Creates new text file for the user unless one already exists. 
public static void retrieveStats() { 


    try { 

     writer = new FileWriter(userName + "Stats.txt", true); 
     outputfile = new PrintWriter (writer); 

    } catch (IOException e) { 
    } 
} 

您將開始使用FileReader而不是FileWriter進行此操作。

例如在Java中8,像這樣:

//Reads existing text file for the user. 
public static void retrieveStats() { 
    try (BufferedReader br = new BufferedReader(new FileReader(userName + "Stats.txt"))) { 
     String line; 
     while ((line = br.readLine()) != null) { 

      Matcher correctMatcher = Pattern.compile("Correct Answers:(.*)").matcher(line); 
      if (correctMatcher.matches()) { 
       correct = Integer.valueOf(correctMatcher.group(1)); 
      } 

      // TODO complete other matchers 

     } 
    } catch (IOException e) { 
    } 
} 
+0

所以我應該從while循環中的文本文件中提取整數並將它們添加到我的新結果中?如果是這樣,我將如何從文本文件中提取整數? – Navi4458

+0

是的。考慮使用正則表達式。 –

+0

我把'正確= Integer.parseInt(線); '在while循環中。似乎沒有工作。我在正確的軌道上嗎? – Navi4458