2014-01-16 23 views
1

我正在做這段代碼,我需要執行基於時間已過去多長時間的功能。基於時間的設置條件通過

因此,對於隨機的例子,我想測量的時間以毫秒爲單位,直到10,而這種情況發生時,它會打印你好。在這個過程中,如果它達到6秒鐘,我希望它打印出說再見說2秒,然後繼續打印出你好2秒,直到它達到10.

我假設這將與if陳述和while循環但尚未成功完成。

我一直在使用currentTimeMillis(),我寧願使用該選項來衡量時間,但總的來說,我將如何能夠以上述方式進行上述操作?這個例子很愚蠢,但我實際上想要做的是類似的,所以上面會做。

謝謝你們。

編輯:按照要求,這是我已經試過了上面的例子

long x = System.currentTimeMillis(); 

    while(System.currentTimeMillis() - x < 10000) 
    { 
     System.out.println("hello"); 

     if(System.currentTimeMillis() - x == 6000) 
     { 
      System.out.println("goodbye"); 
      if(System.currentTimeMillis() - x > 8000) 
      { 
       System.out.println("hello"); 
      } 
     } 

    } 
+1

您能發佈迄今爲止所做的工作嗎? –

+0

你不能依賴任何你會碰到'6000'等確切的目標標記。你應該使用一系列選項或使用Thread.sleep爲了創建一個延遲,然後你想在每個條件下產生的結果。 –

+0

是的,我也嘗試過,它在展示你好和再見方面的工作,但如果你知道我的意思,在指定的時間後不會再回來問好。 – Steglas

回答

2

只是記錄的開始時間,然後做每一個循環,直到當前時間到達該開始時間加上任何門檻。例如:

long startTime = System.currentTimeMillis(); 
long tenSecondsFromStart = startTime + 10*1000; 
long eightSecondsFromStart = startTime + 8*1000; 
long sixSecondsFromStart = startTime + 6*1000; 


while(System.currentTimeMillis() < sixSecondsFromStart){ 
    System.out.println("Hello"); 
} 

while(System.currentTimeMillis() < eightSecondsFromStart){ 
    System.out.println("Goodbye"); 
} 

while(System.currentTimeMillis() < tenSecondsFromStart){ 
    System.out.println("Hello again"); 
} 
+0

是的,這是一個很好的做法。爲了使其成爲一個變量,並因此繼續任何時間量,我只需用一個變量替換10,8或6就行了吧? – Steglas

+0

@Steglas當然。這只是一個例子。您可以修改此方法以在任何時間內執行任何操作。 –

+0

是的設法這樣做,感謝幫助隊友。 – Steglas