0
    Calendar date1 = Calendar.getInstance();
    Calendar date2 = Calendar.getInstance();
    boolean checkTime = true;





        if (checkTime == true)
            before=date1.get(Calendar.SECOND);
        checkTime=false;

        after=date2.get(Calendar.SECOND);   

        difference= after-before;

前の変数が静的な秒になり、その後の時間を再計算し続け、2 つの差を取得するようにしています。ただし、「after」変数は 1 回しか更新されないようで、差は 0 になります。

Ps。これは私が遊んでいるゲームのためのもので、時間に合わせて動きを作ろうとしています。何が間違っているのかわかりません。

4

2 に答える 2

0
Calendar date2 = Calendar.getInstance();

現在の日付と時刻で初期化された Calendar を取得します。その後は変化しないので、after常に同じ値になります。反復ごとに新しい現在時刻が必要な場合は、反復ごとに新しいインスタンスを作成する (または を使用するSystem.currentTimeMillis()) 必要があります。

于 2013-02-19T05:54:59.617 に答える
0

ほとんどの場合、コード行は 1 ミリ秒未満で実行されるため、0 が返されます。また、ランタイムの最適化と GC がその役割を果たしています。

全体として、結果がゼロでないことを確認することはできません。

あなたはこのようなことを試すことができます、

Calendar date1 = Calendar.getInstance();
try{
Thread.sleep(1000);
}catch(Exception e){}
Calendar date2 = Calendar.getInstance();

差を 1 とした.

こちらもご覧ください。

于 2013-02-19T06:17:40.133 に答える