我正在尝试创建一个if语句,其中X可能等于多个值。基本上,我想要像
这样的东西if(month == (2||4||6||9||11));
但是,我不能这样做,因为int不能同意“||”运营商。我想知道如何创建这样的if语句。
答案 0 :(得分:4)
您无法以这种方式使用它,因为||
运算符需要boolean
个操作数(并且您使用的是整数)。
您的替代方案是:
if
语句,每个相等表达式分开:if (month == 2 || month == 4 || month == 6 || month == 9 || month == 11) {
// your stuff here
}
switch
语句通过:switch (month) {
case 2:
case 4:
case 8:
case 9:
case 11:
// your stuff here
break;
default:
// do nothing
break;
}
(但小心使用堕落,有些人可能认为这是一种不好的做法 - 因为它可能会使你的代码意图不那么明确。)
contains()
方法:if (java.util.Arrays.asList(2, 4, 6, 9, 11).contains(month)){
// your stuff here
}
当然,使用一种或另一种选择取决于个人意见和操作数。
作为关于代码可读性的附注,我的建议是获取该表达式的含义并为其创建一个方法,这将使您的代码更易于理解和维护。 / p>
所以,假设这些月份是“全价”(或任何对您的业务规则有意义的事情)的月份。我会用:
if (isFullPricedMonth(month)) {
// your stuff here
}
当然,该方法(使用之前发布的任何解决方案):
public boolean isFullPricedMonth(int month) {
return month == 2 || month == 4 || month == 6 || month == 9 || month == 11;
}
答案 1 :(得分:1)
int a = 2;
if (a == 3 || a == 4) {
//do stuff
}
答案 2 :(得分:1)
List<Integer> months = Arrays.asList(2, 4, 6, 9, 11);
if(months.contains(month)){
// do something
}
答案 3 :(得分:0)
您必须将每个值与月份进行比较,并将其与||
if(month == 2 ||month == 4 ||month == 6 ||month == 9 ||month == 11);
我建议您使用switch
声明。
switch (month){
case 2:
case 4:
case 6:
case 9:
case 11:
//do stuff here
}
答案 4 :(得分:0)
你可以问英国的汽车是黑色还是白色。在大多数编程语言中都不能这样做。在编程语言中,您必须询问汽车是黑色还是汽车是白色的:
if(month == 2 || month == 4 /* || month == ... */ )