0

Javaで整数を保存するための簡単なヒントを教えてください。タイマーを使用してカスタム時計を作成しています & プログラムを終了する (または自動再起動が開始されて保存メソッドを呼び出す) ときに時間を保存して、中断したところから開始したいと考えています。

私のコード:

MainClass のメソッド:

        t = new Timer();
        tt = new JGameTimer();
        t.scheduleAtFixedRate(tt, 1000, 1000);

時間クラス:

    private static int timeInSeconds = 0, timeInMinutes = 0, timeInHours = 0, timeInDays = 0, timeInYears = 0;
    private int lastTimeInSeconds, lastTimeInMinutes, lastTimeInHours, lastTimeInDays, lastTimeInYears;
    private boolean timeHasBeenSet = false;

    public void run() {
        if (!timeHasBeenSet) {
        timeInSeconds = lastTimeInSeconds;
        timeInMinutes = lastTimeInMinutes;
        timeInHours = lastTimeInHours;
        timeInDays = lastTimeInDays;
        timeInYears = lastTimeInYears;
        timeHasBeenSet = true;
        }else{
        continueTime();
        }
    }

    public void saveTime() {
        lastTimeInSeconds = timeInSeconds;
        lastTimeInMinutes = timeInMinutes;
        lastTimeInHours = timeInHours;
        lastTimeInDays = timeInDays;
        lastTimeInYears = timeInYears;
    }

    public void continueTime() {
        timeInSeconds++;
        if (timeInSeconds == 60) {
            timeInSeconds = 0;
            timeInMinutes++;
        }
        if (timeInSeconds == 10) {
            saveTime();
            System.out.println("Time Saved (Seconds)");
        }
        if (timeInMinutes == 60) {
            timeInMinutes = 0;
            timeInHours++;
        }
        if (timeInMinutes == 2) {
            saveTime();
            System.out.println("Time Saved (Minutes)");
        }
        if (timeInHours == 24) {
            timeInHours = 0;
            timeInDays++;
        }
        if (timeInDays == 2920) {
            timeInDays = 0;
            timeInYears++;
        }
        System.out.println("Time is "+timeInYears+":"+timeInDays+":"+timeInHours+":"+timeInMinutes+":"+timeInSeconds+"");
    }
4

2 に答える 2

2

java.io.DataOutputStream基になる と一緒に使用することをお勧めしjava.io.FileOutputStreamます。DataOutputStreamプリミティブ型を記述するメソッドを提供します。

DataOutputStream output = new DataOutputStream(
        new FileOutputStream(new File("my-file.dat")));
output.writeInt(someInt);
// ... write more values ...

DataInputStreamと を使用して、後でこれらを (同じ順序で) 読み返すことができますFileInputStream

または、保存するデータを保持するクラスを作成し、Java のシリアル化メカニズムを使用してデータを保存/ロードすることもできます。

于 2013-10-16T03:23:18.837 に答える
0

簡単なヒントは、時間オブジェクト全体をファイルに保存することです。インターフェイス Serializable を実装し、ObjectOutputStream を使用してシリアライズ可能なオブジェクトを保存/読み取る方法について Web を検索します。シャットダウン時にコードを追加するには Java でのプログラム終了時にコードを実行する をご覧ください。

于 2013-10-16T03:22:28.230 に答える