编辑:对你们中的一些人造成困惑表示歉意,这里不再赘述。
我对stackoverflow非常陌生。所以我提前为一个愚蠢的问题道歉。
我在Udemy中遇到了以下练习,我的代码失败了。请帮助我了解为什么它会失败?
练习说明:
/ *编写一个具有2个参数的shouldWakeUp方法。第一个参数应为boolean类型,并命名为barking,代表我们的狗当前是否在吠叫第二个参数表示一天中的小时,类型为int,名称为hourOfDay,有效范围为0-23如果狗在8个小时之前或22个小时之后吠叫,我们必须醒来,这样才能返回true;
在所有其他情况下,返回false;
如果hourOfDay参数小于0或大于23,则返回false*?
public class BarkingDog {
public static boolean shouldWakeUp(boolean barking, int hourOfDay) {
if (hourOfDay < 8 || hourOfDay > 22) {
return true;
} else if (hourOfDay < 0 || hourOfDay > 23) {
}
return false;
}
}
基于评论:
“方法调用shouldWakeUp(false,-5)返回值“ true”,但应为“ false”
不是很奇怪:
if (hourOfDay < 8 || hourOfDay > 22) {
return true;
}
如果hourOfDay = -5,则为
hourOfDay < 8
因此它将返回True。由于您的第二个if语句检查它是否小于0,因此这似乎很奇怪。但是,您的第二个if语句从未达到。
如果数字小于0,那么它也小于5。
为了解决此问题,您可以执行以下操作:
public static boolean shouldWakeUp(boolean barking, int hourOfDay) {
if (hourOfDay < 0 || hourOfDay > 23) {
return false;
}
return true;
}
现在,我们检查值是否小于0(例如-1,-2,-3等)或大于23(例如24、25、26等),然后返回false。在所有其他情况下,我们返回true(这表示介于0到23之间)