2012-11-07 32 views
-3

所以我必須設計和實施類時鐘來實現一天中的時間節目.... 我已經完成了所有這一切,我只需要幫助這兩個最後的部分(不知道它的正確如何我 1.分鐘大於或等於60時增加小時數。 秒數大於或等於60時增加分鐘數。 2. inputTime輸入時鐘對象的小時,分​​鍾和秒。驗證輸入(小時0-23.minutes 0-59和秒0-59)java代碼,我想確保即時消息正確地執行它?

這是我有 1.

while (Minutes >= 60) { 
    Minutes = Minutes - 60; 
    Hours = Hours + 1; 
} 

while (Seconds >= 60) { 
    Seconds = Seconds - 60; 
    Minutes = Minutes + 1; 
} 

2.

public void inputTime() { 
    Scanner input = new Scanner(System.in); 

    System.out.println("Enter Hours = "); 
    Hours = input.nextInt(); 
    System.out.println("Enter Minutes = "); 
    Minutes = input.nextInt(); 
    System.out.println("Enter Seconds = "); 
    Seconds = input.nextInt(); 

    //validates the input 
    if (0 <= Hours && Hours < 24) 
     Hours = Hours; 
    else 
     System.out.println("invalid"); 

    if (0 <= Minutes && Minutes < 60) 
     Minutes = Minutes; 
    else 
     System.out.println("invalid"); 

    if (0 <= Seconds && Seconds < 60) 
     Seconds = Seconds; 
    else 
     System.out.println("invalid"); 
} 
+6

如果您遵守Java編碼慣例,您的代碼將會更容易閱讀 - 特別是,變量以小寫字母開頭(除非它們是常量,所有大寫字母)。 – assylias

+2

更不用說發佈格式良好的代碼。這段代碼都是左對齊的,幾乎不可能閱讀和理解。 –

+1

在你的第一個例子中'while while (Minutes> 60 | Minutes == 60);'用''替換';'並在適當的位置插入'}。如果你像現在一樣擁有它,你的循環將不會像循環一樣運行。 – jlordo

回答

2

你的代碼包含大量的錯誤,並且沒有使用任何合理的編碼約定書寫。

  1. 我們從小寫字母開始變量和方法。 (MinutesSeconds等)
  2. while(Minutes>60 | Minutes==60);不是因爲它的身體是空的。
  3. Minutes>60 | Minutes==60在語法上是錯誤的:你應該使用||爲「或」
  4. 雖然Java允許寫if-else結構,而不{}強烈建議對代碼的可讀性
  5. Java編譯器會忽略空格和和製表符。但是,您應該在if-else塊內使用縮進。
0

很少有輸入。

  1. 使用||代替|中刪除到底;,加花括號包下兩個聲明。

    while(Minutes>60 || Minutes==60){ 
    Minutes=Minutes-60; 
    Hours=Hours+1; 
    } 
    while(Seconds>60 || Seconds==60){ 
        Seconds=Seconds-60; 
        Minutes=Minutes+1; 
    } 
    
  2. 有細微處理前的第二處理爲您seconds處理改變應該處理minutes時被照顧的minutes

    while(Seconds>60 || Seconds==60){ 
        Seconds=Seconds-60; 
        Minutes=Minutes+1; 
    } 
    while(Minutes>60 || Minutes==60){ 
    Minutes=Minutes-60; 
    Hours=Hours+1; 
    } 
    
  3. 使用正確的命名約定,即類的名稱,開始大寫,而方法和變量與小寫開頭。

  4. 一旦完成讀取輸入,最後關閉Scanner

0

而不是使用一個循環,你可以計算它會多少次。

minutes += seconds/60; 
seconds %= 60; 
hours += minutes/60; 
minutes %= 60; 

注意:您應該計算在seconds調整第一,因爲它可能會改變的小時數。

相關問題