2017-04-14 91 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