2014-10-12 2 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

Как вы называете методы? –

+0

Вы должны тщательно пересмотреть, какие условия вы хотите протестировать, и проверить, какие условия вы фактически тестируете в первой инструкции if каждого метода. – Abrixas2

+0

Можете перефразировать вопрос, я не знаю, что делать, очень широко. – kodaman

ответ

2

В, если выполнено условие, если первое утверждение верно и дополнительный условный комбинируется с OR то возвращает истину, хотя второе условие ложно оно не должно быть или заявление между условиями должно быть и

1

You используют логический ИЛИ, где вы должны использовать логический И.

Например это:

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

должен быть

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

В вашей версии, если значение, возвращаемое getSecond() 59 он никогда не достигнет else if, потому что первое, если заявление будет оценивать getSecond() > 0 к true, и поскольку он является логическим ИЛИ, он не будет оценивать второе логическое выражение в этом состоянии (getSecond() <= 58).

То же самое касается минут и часов.

Смежные вопросы