If语句中的boolean等于运算符

时间:2013-11-30 23:08:05

标签: java if-statement boolean

我正在尝试创建一个if语句,其中X可能等于多个值。基本上,我想要像

这样的东西
if(month == (2||4||6||9||11)); 

但是,我不能这样做,因为int不能同意“||”运营商。我想知道如何创建这样的if语句。

5 个答案:

答案 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;
}

(但小心使用堕落,有些人可能认为这是一种不好的做法 - 因为它可能会使你的代码意图不那么明确。)

使用temporary collectioncontains()方法:

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 == ... */ )