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

だから、最初の新しいファイルを書き出した後、既存のファイルを読み込み、メモリ内の統計情報を更新します。このようなJava 8で例えば

、。 –

+0

@JonSkeet残念ながら、私はそれをどのように書くのか考えていません。私は早くそれを試みた。とてもうまくいきません... – Navi4458

+0

ヒント:あなたの好きな検索エンジンで 'java write text file'をヒントします。 – 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) { 
    } 
} 

FileWriterではなく、FileReaderを使用してこの作業を開始します。

//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

私は 'correct = Integer.parseInt(line);を入れます。 'whileループ。働いていないようです。正しい軌道にいるのですか? – Navi4458

関連する問題