2016-04-27 42 views
0

我在java中有項目。如何讓我的時鐘像這樣03:05:01

創建具有以下規格

  1. 屬性的CTime類:小時,分鐘和秒
  2. 小時> = 0和< = 23,分鐘> = 0和< = 59,第二> = 0和< = 59
  3. 方法
    • 構造用於更新的CTime屬性
    • setget方法爲每個屬性
    • tick方法,其添加1秒至所述CTime對象,並且沒有返回
    • toString方法創建時間字符串具有以下格式HH:MM:SS例如22點15分01秒

,我這樣做

public class CTime { 

    int hour; 
    int min; 
    int sec; 

    public CTime(int h, int m, int s) { 
     hour = h; 
     min = m; 
     sec = s; 
    } 

    public void setHour(int h) { 
     hour = h; 
    } 

    public int getHour() { 
     return hour; 
    } 

    public void setMin(int m) { 
     min = m; 
    } 

    public int getMin() { 
     return min; 
    } 

    public void setSec(int s) { 
     sec = s; 
    } 

    public int getSec() { 
     return sec; 
    } 

    public void tick() { 
     sec++; 
     if (sec >= 59) { 
      sec = 0; 
      min++; 
      if (min >= 59) { 
       min = 0; 
      } 
      hour++; 
     } 
    } 

    public String toString() { 
     String s = hour + ":" + min + ":" + sec; 
     return s; 
    } 
} 

如何使我小時,分鐘和秒,2位,例如5時02分09秒?

而我的代碼是否正確?

+0

只需使用['String.format()'](https://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html)。看看我的答案。 –

回答

2

如果你堅持做這種東西用繩子你的方式,你可以這樣做以下:

public String toString() { 
    String s = (hour > 9 ? hour : "0" + hour) + ":" + (min > 9 ? min : "0" + min) + ":" + (sec > 9 ? sec : "0" + sec); 
    return s; 
} 
+0

你可以向我解釋你在做什麼 – Mohannad

+0

我正在使用內聯IF語句(不確定這種語句的技術術語)來確定輸出中是否需要前導0。簡而言之,如果小時,分鐘或秒數大於9,則需要輸出中的前導0來保持每個段中的2位數。它只是確定輸出是否是單個數字,如果是,它將在追加單個數字值之前預先設置爲0,所以它始終爲2位數。 – DeadCereal

+1

該語法稱爲[三運營商](https://en.m.wikipedia.org/wiki/Ternary_operation)。只是「if-then」語句的緊湊版本。 –

2

只需使用String.format()

public String toString() { 
    String s = String.format("%02d:%02d:%02d", hour, min, sec); 
    return s; 
} 

還有一個鏈接here

而你的代碼,是的它是正確的。要讓它成爲live時鐘,您只需要每秒撥打tick()方法即可。看看this SO post來學習如何做到這一點。

相關問題