2013-07-25 66 views
-4

我想顯示10秒的倒計時。像10-9-8-7...從java中的系統中抽取時間。我怎樣才能實現它?你能給我的源代碼嗎?從java中的系統輸入時間

+2

請訪問此頁面的常見問題解答period。 –

+0

翻譯:'你可以爲我做,所以我不需要做任何事情' –

回答

1

遞減for循環(從10到1)和Thread.sleep的組合應該適合您的需要。

+0

'線程#睡眠'並不能保證應用程序將真正睡眠你提供的作爲參數的毫秒數。請參閱您發佈的文檔:*遵循系統定時器和調度程序的**精度和準確度**。 –

+0

@LuiggiMendoza這是真的,但爲了這個任務的目的,它應該足夠準確。 – biziclop

0

試試這個

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


public class TimeCal { 
static int interval; 
static Timer timer; 

public static void main(String[] args) { 
    Scanner sc = new Scanner(System.in); 
    System.out.print("Input in seconds => : "); 
    String secs = sc.nextLine(); 
    int delay = 1000; 
    int period = 1000; 
    timer = new java.util.Timer(); 
    interval = Integer.parseInt(secs); 
    System.out.println(secs); 
    timer.scheduleAtFixedRate(new TimerTask() { 
     public void run() { 
      System.out.println(setInterval()); 

     } 
    }, delay, period); 
} 
private static final int setInterval(){ 
    if(interval== 1) timer.cancel(); 
    return --interval; 
} 
} 
1

您可以利用TimerscheduleAtFixedRate方法,將獲取初始delay和每個該任務應運行

final Timer t = new Timer(); 
    t.scheduleAtFixedRate(new TimerTask() { 

     int i = 10; 
     @Override 
     public void run() { 
      System.out.println(i); 
      i--; 
      if(i <= 0) { 
       t.cancel(); 
      } 
     } 
    }, 1000, 1000); 
+1

很好的解決方案,+1 – Elbek

+0

爲什麼大家都用空構造函數來使用Timer?你可以在構造函數中指定delay和Runnable。編輯:哦,等待,哪個計時器? util或swing?我更喜歡揮杆。 –

+0

其'util.Timer' – sanbhat