2015-09-05 61 views
0

我是一個初學者,所以很抱歉基本問題。我試圖每分鐘添加一個變量5,但如果沒有範圍問題或沒有添加失敗,我就無法做到這一點。如何解決這個問題?添加到計時器中的變量

我的代碼是:

import java.util.Timer; 
import java.util.TimerTask; 

public class MainTimer { 
    public static void main(String[] args) { 


     Timer sigMassTimer = new Timer(); 

     int sigMass; 
     sigMass = 0; 

     sigMassTimer.schedule(new TimerTask(){ 

      @Override 
      public void run(){ 

       String invSigMass = "You have "+ (sigMass + 5) + " units."; 
       System.out.println(invSigMass); 
      } 
     }, 1*60*1000, 1*60*1000);  
    } 
} 

和我 「你有5個單位」 作爲輸出的每一分鐘。

回答

0

sigMass被初始化爲0,而你只是顯示sigMass + 5,即5每分鐘,而不是實際遞增5sigMass

嘗試改變這一點:

String invSigMass = "You have "+ (sigMass + 5) + " units."; 

sigMass = sigMass + 5;  
String invSigMass = "You have "+ sigMass + " units."; 

告訴我,如果它的工作原理。

+0

除此之外,'sigMass'聲明需要移入'TimerTask'類的TimerTask' 。 – qqilihq

+0

我已經嘗試了兩個建議;第一個給我一個錯誤,因爲封閉範圍中的局部變量sigMass必須是最終的(不知道這意味着什麼)。第二個每分鐘給出一個「你有5個單位」的輸出,這就是爲什麼我在覆蓋前嘗試對它進行初始化的原因;我認爲這個值每次都會被設置爲0。不知道這是否正確。 – ScottPretorius

1

您需要的sigMass申報遷入TimerTask(其他聰明人,你只能訪問它,如果它被宣佈final,因此不能每次調用遞增)改變你遞增方式:

Timer sigMassTimer = new Timer(); 
sigMassTimer.schedule(new TimerTask() { 
    int sigMass = 0; 
    @Override 
    public void run() { 
     sigMass += 5; 
     String invSigMass = "You have " + sigMass + " units."; 
     System.out.println(invSigMass); 
    } 
}, 1*60*1000, 1*60*1000); 
// Output: 
// You have 5 units. 
// You have 10 units. 
// You have 15 units. 
// You have 20 units. 
// You have 25 units. 

或者,您也可以讓sigMass成爲MainTimer類的成員。

+0

這工作!非常感謝! – ScottPretorius