2017-07-12 6 views
-2

私はカウントダウンタイマーとして機能する簡単なコードを作ろうとしました。ユーザは、端末に2桁を、それに応じて分と秒の値を入力します。コードは次のとおりです。カウントダウンタイマー秒数が60秒を超える

public class CountdownMins 
{ 
    public static void main(String args[]) throws InterruptedException 
    { 

     int min = Integer.parseInt(args[0]); 
     int sec = Integer.parseInt(args[1]); 

     for(int i=min;i>=0;i--) 
     { 
      for(int j=sec;j>=0;j--) 
      { 
       Thread.sleep(1000); 
       System.out.println(i +" minutes" + " " + j + " seconds"); 
      } 

       sec=60; 


     } 
    } 

} 

ユーザーが2番目の入力に60を超える数値を入力すると、私は何ができるのでしょうか。 120を置く場合と同様に、2分に変換するか、90を入力すると1分30秒に変換して分数値に合わせて加算します。

+2

分を秒に変換してそこからカウントダウンします。 print outはそれを分と秒に変換することができます – Kevin

+0

または、あなたのコードを 'if(sec> 60){sec = 60; } '。それはあなたの実装なので、あなたが決定します。 – Tavo

+1

また、 'sleep'はスリープする最小時間であることを覚えておいてください。精度が必要な場合は' System.currentTimeMillis() 'を組み込むべきです。@Elliottの答えを参照してください –

答えて

0

秒を60で割って分に分けて残りを秒にします。あなたがネガで安全になりたい場合は

min += sec/60; 
sec = sec % 60; 

も追加します。あなたは、重い物を持ち上げるのほとんどを実行するためにTimeUnitを使用してミリ秒にすべてを変換して、計算を実行することができます

if(sec < 0){sec += 60;} 
1

。何かのように、

long start = System.currentTimeMillis(); 
long total = TimeUnit.MINUTES.toMillis(min) + TimeUnit.SECONDS.toMillis(sec); 
long remain; 
while ((remain = start + total - System.currentTimeMillis()) > 0) { 
    try { 
     long reMin = TimeUnit.MILLISECONDS.toMinutes(remain); 
     long reSec = TimeUnit.MILLISECONDS 
       .toSeconds(remain - TimeUnit.MINUTES.toMillis(reMin)); 
     System.out.printf("%d minutes, %d seconds%n", reMin, reSec); 
     Thread.sleep(1000); 
    } catch (InterruptedException e) { 
     e.printStackTrace(); 
    } 
} 
関連する問題