2017-07-12 3 views
-2

Also habe ich versucht, einen einfachen Code, der als Countdown-Timer fungiert. Der Benutzer würde 2 Ziffern in das Terminal eingeben, die Minuten- und Sekundenwerte dementsprechend. Hier ist der Code:Countdown-Timer mit Sekunden über 60 Sekunden

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; 


     } 
    } 

} 

Was ich frage mich, war das, was kann ich tun, wenn der Benutzer gibt eine Zahl größer als 60 auf dem zweiten Eingang. Wie wenn sie 120 setzen, würde es stattdessen in 2 Minuten umwandeln, oder wenn sie 90 eingeben, würde es in 1 Minute und 30 Sekunden umwandeln und sie entsprechend dem eingegebenen Minutenwert hinzufügen.

+2

Konvertieren Sie die Minuten in Sekunden, fügen Sie die Sekunden hinzu und Countdown von dort. Der Ausdruck kann sie zurück in Minuten und Sekunden umwandeln – Kevin

+0

Oder Sie können Ihren Code einfach als 'if (sec> 60) {sec = 60; } '. Es ist Ihre Implementierung, also entscheiden Sie. – Tavo

+1

Denken Sie auch daran, dass 'sleep' die Mindestzeit ist, in der es schlafen wird. Wenn Sie also eine Genauigkeit wünschen, sollten Sie' System.currentTimeMillis() '' in @Ellliott answer einbauen –

Antwort

0

Du könntest sec durch 60 dividieren und den addieren Dividende zu Minuten und den Rest als Sec.

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

, wenn Sie mit Negativen, sicher sein möchten, fügen Sie auch:

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

Sie TimeUnit können die meisten schweres Heben durchzuführen, alles zu Millisekunden konvertieren und Ihre Berechnungen durchführen. Etwas wie,

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(); 
    } 
} 
Verwandte Themen