2016-03-02 51 views
-1

我試圖在while循環內執行5分鐘的代碼。java代碼不能用於while循環

long init= System.currentTimeMillis(); 
while(((System.currentTimeMillis()-time)/1000%60)<5){ 

//some part of code 
} 

但我無法得到它的任何建議如何解決它。

+0

嘗試使用定時器請參閱https://docs.oracle.com/javase/7/docs/api/java/util/Timer.html – Willmore

+1

'time'變量指示什麼? –

+0

long init = System.currentTimeMillis(); while(((System.currentTimeMillis() - init)/ 1000%60)<5){ –

回答

0

System.currentTimeMillis()取決於實施和操作系統。

取而代之的是使用System.nanoTime(),它返回最精確的可用系統定時器的當前值,以納秒爲單位。

這可能會導致您的時間問題。

long init= System.nanoTime(); 
while(((System.nanoTime()-init)/1000000000/60)<5){ 

//some part of code 
} 
+0

如何通過System.currentTimeMillis()實現它? –

+0

1000%60是錯誤的。讓它1000/60 – FallAndLearn

+0

它工作嗎? – FallAndLearn

0

剛:更改代碼如下,然後再試一次:

while(((System.currentTimeMillis()-time)/1000%60)<5){ 

while(((System.currentTimeMillis()-init)/1000/60)<5){ 

變化timeinit%/