我不知道该怎么办

时间:2014-10-12 13:18:18

标签: statements

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语句没有执行!

有谁知道它为什么不起作用?

2 个答案:

答案 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}})。

分钟和小时也一样。