2013-02-19 91 views
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; 

我這樣做,以便前變量將成爲一個靜態秒,它會不斷重新計算後的時間,並獲得兩者之間的差異。然而,它似乎只更新'後'變量一次,導致相差0.定時運動java遊戲

Ps。這是一款我正在玩的遊戲,我正試圖讓這個動作相對於時間。 我無法弄清楚我做錯了什麼。

+0

看起來像你的代碼的一部分缺少......? – wns349 2013-02-19 04:43:29

+0

沒有區別,處理器速度可以以毫秒爲單位進行計算,更好。只有一小部分的差異會在那裏。 – Parvathy 2013-02-19 04:43:35

+1

對我來說,使用計時器會更好 – 2013-02-19 04:44:02

回答

0
Calendar date2 = Calendar.getInstance(); 

獲取使用當前日期和時間初始化的日曆。之後它不會改變,所以after將始終是相同的值。如果每次迭代都需要新的當前時間,則每次迭代都需要創建一個新實例(或使用System.currentTimeMillis())。

0

大多數情況下,您將得到0,因爲您的代碼行在不到一毫秒內執行。還有運行時優化和GC扮演他們的角色。

總而言之,您無法確定結果是否爲非零。

你可以嘗試這樣的事情,

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

了差異爲1

看一看here了。