有人能看到我错在哪里吗?我的代码应该返回true,但它返回的是false,它不应该返回


public class BarkingDog {
public static void main(String[] args) {
shouldWakeUp(true , 23);
}
public static boolean shouldWakeUp(boolean barking, int hourOfDay) {
if(barking==true) {
if(hourOfDay>=0 && hourOfDay<=23){
if(hourOfDay<8 && hourOfDay>22){
System.out.println("WakeUp");
return true;
}
}
}
System.out.println("No need to WakeUp");
return false;
}

该代码应该返回true,并且应该打印"true";Wakeup";,但其返回错误并打印";不需要睡觉";。我想知道这里的逻辑错误在哪里。

hourOfDay<8 && hourOfDay>22

它总是假的。因此,if分支将永远不会执行。

看看最后一个条件,它应该是hourOfDay<8 || hourOfDay>22。这两行表示逻辑或,而不是和。现在,23不能小于8,也不能大于22。

最新更新