2014-10-12 138 views
-1
public MyTime nextSecond() 
{ 
    if(getSecond()>=0||getSecond()<=58) 
    return new MyTime(getHour(),getMinute(),getSecond()+1); 
    else if(getSecond()==59) 
    return new MyTime(getHour(),getMinute(),0); 
    else 
    throw new IllegalArgumentException("Invalid Second!"); 
} 

public MyTime nextMinute() 
{ 
    if(getMinute()>=0||getMinute()<=58) 
    return new MyTime(getHour(),getMinute()+1,0); 
    else if(getMinute()==59) 
    return new MyTime(getHour()+1,0,0); 
    else 
    throw new IllegalArgumentException("Invalid Minute!"); 
} 


public MyTime nextHour() 
{ 
    if(getHour()>=0||getHour()<=22) 
    return new MyTime(getHour()+1,0,0); 
    else if(getHour()==23) 
    return new MyTime(0,0,0); 
    else 
    throw new IllegalArgumentException("Invalid Hour!"); 
} 
} 

我是一個新的程序員,這是我的代碼,它沒有任何錯誤,但是如果沒有執行語句!我不知道該怎麼辦

有誰知道它爲什麼不工作?

+0

你是怎麼調用這些方法的? – 2014-10-12 13:19:32

+0

您應該仔細重新考慮您想要測試的條件,並檢查您在每種方法的第一條if語句中實際測試的條件。 – Abrixas2 2014-10-12 13:21:42

+0

可能想要改寫這個問題,我不知道該做什麼很廣泛。 – kodaman 2014-10-12 13:21:58

回答

2

在if條件,如果第一個語句是正確的和額外的條件與合併OR那麼它雖然第二個條件是假 它不應該是OR條件之間的語句應該和

1

你返回true正在使用邏輯「或」,您應該使用邏輯「與」。

例如這樣的:

if (getSecond() >= 0 || getSecond() <= 58) 

應該

if (getSecond() >= 0 && getSecond() <= 58) 

在你的版本,如果通過getSecond()返回的值是59,將永遠達不到else if因爲第一個if語句將評估getSecond() > 0true,並且由於它是邏輯OR,它不會評估該條件下的第二個邏輯表達式(getSecond() <= 58)。

分鐘和小時也是如此。

相關問題