Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 关于不起作用的if…else条件_Java_Return Value_Return Type - Fatal编程技术网

Java 关于不起作用的if…else条件

Java 关于不起作用的if…else条件,java,return-value,return-type,Java,Return Value,Return Type,下面显示的代码工作正常,但仅适用于一个部分,如果输入的月份小于1或大于12,并且输入的年份小于1或大于9999,则if…else语句必须返回-1 我已经编译过很多次了,我甚至尝试过重新安排条件,比如将小于改为大于,然后将整个switch语句放入if语句中。似乎什么都没用 public static int getDaysInMonth(int month, int year) { int maxDay = 31; int secMaxDay = 30;

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

我已经编译过很多次了,我甚至尝试过重新安排条件,比如将小于改为大于,然后将整个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;
        }
    }
}
public static int getDaysInMonth(int-month,int-year){
int maxDay=31;
int secMaxDay=30;
int specialDay=29;
int minDay=28;
如果((月<1 |月>12)和(年<1 |年>9999)){
返回-1;
}否则{
开关(月){
案例1:
案例3:
案例5:
案例7:
案例8:
案例10:
案例12:
返回maxDay;
案例2:
如果(年){
返回特殊日期;
}否则{
返回minDay;
}
违约:
返回secMaxDay;
}
}
}

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

是否仅当年份和月份都不好时才返回-1?或者,如果有人错了,那么在您返回时,月份和年份之间的&&也应该是一个|

如果两个条件均为真,则仅为“-1”

&&
”仅当两个continment都是
true
时才会返回
true

所以你应该改变

if((月<1 |月>12)和&(年<1 |年>9999))

if((月<1 | |月>12)| | |(年<1 | |年>9999))

您可以将其简化为:

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

问题是(例如)如果
month<1 | | month>12
为真,而
year<1 | | year>9999
为假,那么
真与假
返回

和&
应该是
|
。你的问题也自相矛盾。月份或年份或两者:所以你需要一个
,而不是
。答案是你自己写的,应该是或
|
在这两个条件之间,而不是
&
,这是一个快速的回答,非常感谢stack社区。一个学java的新手,我的坏。。感谢您再次帮助我脱离主题-请注意,在Java中,日期/日历API月份从0开始计算。例如,参见
java.util.Calendar
中的常量
public final static int JANUARY=0