2017-04-14 5 views
0

私の課題は、ランダムな数学の問題を生成する簡単なmathGameを作成する必要があります。プログラムは、金額と金額をテキストファイルに記録する必要があります。また、既存のファイルを上書きするのではなく、既存のファイルの統計を更新する必要があります。テキストファイルの内容を更新する方法

これは私が各ファイル作成しています方法です。ここで

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(); 
} 

は、プログラムを終了した後、テキストファイルの出力例です:ここで

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

すると、ファイルに書き込まれているものです:

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

正しい、正しくない、とお金は、すべてのグローバル変数であり、Tは初期化されますo。プログラムを再起動してもファイルは残っていますが、[正解]、[不正確な回答]、[収益]の値が上書きされるか、ファイルへの新しいエントリが追加されます。私はちょうどそれを更新したい。 https://pastebin.com/1Cmg5Rt8

答えて

0

はあなたがあなたに必要なものを書き始める前にそれを書いた後、最初の元のテキストを取得してみました:

ここに私のコードのすべてがありますか?

は基本的に、あなたはそれを介して、

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

そして、初めにすることができますループをあなたが持っているファイルからの入力を取得し、ファイルに書き込みます。

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

テキストに書き換え以前のファイルのすべてを持っていたら、残りのコードを実行して、上書き情報を持つことはできません。

また、try-catchの代わりにIOExceptionをスローすることができます

+0

あなたのコードは古いファイルを新しいファイルにコピーすると思います。実際の解決策は 'Scanner.nextInt()'と 'Scanner.nextDouble()'(またはそれに類似した)関数を使って古いファイルから古い統計を取得することです。 – bleistift2

+0

完全に良い方法です。ユーザーが変数を変更したいかどうかはわかりませんでしたが、この回答を変更してファイル内の変数を変更することもできます。 – Raheel138

関連する問題