为什么第一个if语句失败?

问题描述 投票:-1回答:1

编辑:对你们中的一些人造成困惑表示歉意,这里不再赘述。

我对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;
    }
}
java if-statement
1个回答
0
投票

基于评论:

“方法调用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之间)

© www.soinside.com 2019 - 2024. All rights reserved.