【问题标题】:If statement, compare one variable to multiple [duplicate]if语句,将一个变量与多个变量进行比较[重复]
【发布时间】:2014-02-07 06:37:12
【问题描述】:

例子:

int value = someValue;
if (value == (valueOne OR valueTwo OR valueThree)){
//do code
}

我想避免像下面的示例那样重新输入 value。

if (value == valueOne || value == valueTwo || value == valueThree)

【问题讨论】:

  • 您使用|| 进行布尔或比较。单条| 用于位操作。

标签: java if-statement operators


【解决方案1】:

您不能在 Java 中使用 if 语句执行此操作,而是使用 switch 语句。

switch (value) {
   case 1:
   case 2:
   case 3: {
      //do something
   }
}

这将检查value 是否等于1、2 或3。

【讨论】:

    【解决方案2】:

    您使用|| 进行布尔或比较。单条| 用于位操作。您当前的语法不正确。

    if(value ==1 || value==2 || value ==3)
    

    当然,最好在此处进行范围检查,如下所示:

    if(value>=1 && value<=3)
    

    但不确定您要做什么。

    如果这里的 OR 比较对您更有意义,您应该为这些值定义一些常量,或者考虑使用枚举类型。文字 1、2 和 3 对其他开发人员没有任何意义。

    【讨论】:

    • 为了简单起见,我最初放置了 1,2,3。我不需要范围。我想避免在每次比较时重新输入 value,但如果我必须这样做,那也没关系。
    • @Jakar 是的,语法有点长。 switch 语句可以防止重新输入value,但它也很冗长。进行这种简单的比较,真的没有比这更简洁的方法了。
    • 好的。这就是我的想法,但我相信我已经看到了我想要的另一种语言的东西,所以我认为值得一问。
    • 从技术上讲,有一些方法可以按照您的要求在不重新输入“价值”的情况下做您想做的事。 if(Arrays.asList(val1, val2, val3).contains(value)){ //做事情}
    【解决方案3】:

    这将在一次检查中完成:

    int value = someValue;
    if(Arrays.asList(valueOne, valueTwo, valueThree).contains(someValue)){
        // do the things
    }
    

    【讨论】:

      【解决方案4】:

      您还可以使用 apache commons 中的 Range 类:

      Range r = Range.between(1,3);
      if(r.contains(value)){
      
      }
      

      【讨论】:

        【解决方案5】:

        您最好使用HashSet

         Set<Integer> myset = new HashSet<Integer>();
        //Add values to your set
        if(myset.contains(myvalue));
        {
            //... Do what you want.
        

        这使您的算法更加灵活,当您要检查新值时,无需手动编写新检查代码。

        【讨论】:

          【解决方案6】:
            == tests for reference equality.
          
           .equals() tests for value equality.
          
             //for loop to iterate through the range of values
            if(setofValues.equals( value)) ; // do something
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-06-08
            • 1970-01-01
            • 1970-01-01
            • 2019-12-26
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多