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!");
}
}
我是一名新程序员,这是我的代码,它没有任何错误,但if语句没有执行!
有谁知道它为什么不起作用?
答案 0 :(得分:2)
如果条件是第一个语句是正确的并且额外的条件与OR结合然后它返回true,尽管第二个条件是假 它不应该是条件之间的OR语句它应该是AND
答案 1 :(得分:1)
您正在使用逻辑OR,您应该使用逻辑AND。
例如:
if (getSecond() >= 0 || getSecond() <= 58)
应该是
if (getSecond() >= 0 && getSecond() <= 58)
在您的版本中,如果getSecond()
返回的值为59,则永远不会到达else if
,因为第一个if语句会将getSecond() > 0
评估为true
,因为它是getSecond() <= 58
逻辑OR,它不会评估该条件下的第二个逻辑表达式({{1}})。
分钟和小时也一样。