Java 关于不起作用的if…else条件
下面显示的代码工作正常,但仅适用于一个部分,如果输入的月份小于1或大于12,并且输入的年份小于1或大于9999,则if…else语句必须返回-1 我已经编译过很多次了,我甚至尝试过重新安排条件,比如将小于改为大于,然后将整个switch语句放入if语句中。似乎什么都没用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;
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代码>