关于不起作用的 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
.
下面显示的代码工作正常,但仅适用于一部分,如果输入的月份小于 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
.