2011-06-11 122 views
0

時間設置爲hh:mm:ss,所以時間是23:50:45,一旦它到達午夜它將變成00:00:00。我的考試實踐問題一直讓我寫這樣做的方法,是我的邏輯正確或離開的時候,我很擔心我的if else語句更改小時分鐘和秒

public void increment() 
{ 
if(seconds <= 59) 
{ 
    seconds ++; 
} 
else if (seconds >= 60 && minutes<= 59) 
{ 
    seconds == 0; 
    minutes ++; 
} 
if(minutes >= 60 && hours <= 23) 
{ 
    hours++; 
    minutes == 0; 
} 
else 
{ 
    hours == 0; 
} 
} 
+0

對於初學者來說,你的時鐘應沒讀過「60」,這應該是「00」,這樣你的'if'語句是「關閉的一個」 – 2011-06-11 18:40:03

+1

任何你不使用特別的原因['Date'] (http://download.oracle.com/javase/6/docs/api/java/util/Date.html)?你也在混合'seconds'和'secounds'。 – 2011-06-11 18:42:04

回答

2

你可以更容易地做同樣的事情。

public void increment() {  
    seconds ++; 
    if (seconds >= 60) 
    { 
     seconds = 0; 
     minutes ++; 
    } 
    if(minutes >= 60) 
    { 
     hours++; 
     minutes = 0; 
    } 
    if(hours >= 24) 
    { 
     hours = 0; 
    } 
} 
3

您正在執行使用'=='不等式運算符賦值操作。正確... 而不是minutes==0;,它應該閱讀minutes = 0;等等,因爲你正在分配'0'。 ==將評估爲boolean。你也使用了secound的某個地方,而不是seconds

請參閱this

+0

's/return/evaluate to'。只有函數返回。 – 2011-06-11 18:43:25

+0

@Matt - >謝謝..:D – 2011-06-11 18:44:46

+1

對不起,我現在要修復秒數,拼寫錯誤在我看來很瘋狂。不,我不能在netbeans或任何東西上嘗試它,因爲我在工作,沒有訪問權限。 – user445714 2011-06-11 18:46:22

1

我覺得你的邏輯是錯誤的...

if(secounds <= 59) 
{ 
    seconds ++; 
} 

會導致秒去60 ...或刪除elseelse if之後到來......

正如指出的通過anirudh4444,分配給0,你應該使用=,而不是==

我只是刪除所有的<=條件。並替換最後一個爲

if (hours >= 24) { 
    hours =0; 
} 

另外,拼寫正確秒(這是一些地方在一處拼寫正確拼寫錯誤...)

您的代碼就變成了:

public void increment() 
{ 
seconds ++; 

if (seconds >= 60) 
{ 
    seconds = 0; 
    minutes ++; 
} 
if(minutes >= 60) 
{ 
    hours++; 
    minutes = 0; 
} 
if (hours >= 24) 
{ 
    hours = 0; 
} 
}