关于不起作用的 if...else 条件

Regarding the if...else condition which is not working

下面显示的代码工作正常,但仅适用于一部分,如果输入的月份小于 1 或大于 12,则 if...else 语句必须 return -1 并且输入年份小于1或大于9999

我已经编译过很多次了,我什至尝试过重新排列条件,比如把小于号改成大于号,然后把整个switch语句放到if语句中。似乎没有任何效果

public static int getDaysInMonth(int month, int year) {

        int maxDay = 31;
        int secMaxDay = 30;
        int specialDay = 29;
        int minDay = 28;

    if ((month < 1 || month > 12) && (year < 1 || year > 9999)) {
        return -1;

    } else {
        switch (month) {
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                return maxDay;

            case 2:
                if (isLeapYear(year)){
                    return specialDay;
                } else {
                    return minDay;
                }

            default:
                return secMaxDay;
        }
    }
}

我上面代码的预期输出是,当月份或年份或两者的值小于 1 或大于最大值时,它应该 return -1。

你真的想要 return -1 只有当年份和月份都不好吗?或者一旦错误,月份和年份之间的 && 应该是 ||太

目前你returning "-1" 只有如果两个条件都为真。

'&&' 只会 return true 如果两个条件都是 true.

所以你应该改变

if ((month < 1 || month > 12) && (year < 1 || year > 9999))

if ((month < 1 || month > 12) || (year < 1 || year > 9999))

您可以像这样简化它:

if (month < 1 || month > 12 || year < 1 || year > 9999)

问题是(例如)如果 month < 1 || month > 12 为真但 year < 1 || year > 9999 为假,则 true && false returns false.