【问题标题】:Switch case with multiple values具有多个值的切换案例
【发布时间】:2015-07-01 12:48:43
【问题描述】:

是否有类似case语句的数组并将其作为单个case语句放入switch-假设

String[] statements={"height","HEIGHT"};

然后

switch(code){
 case statements: 
  //code here
  break;
 case something_else:
  break;
}

所以如果我们将值添加到 String 数组中,那么它会在 switch 中自动匹配该数组吗?喜欢

  var1||var2||whatever //accessed from array or anything else for matching

有没有类似的实现方式?

【问题讨论】:

  • 你可以在输入Switch之前尝试String.toUpperCase()
  • 考虑用枚举替换数组和switch语句。

标签: java switch-statement case


【解决方案1】:

你可以去掉中断得到 OR

switch(code){
 case case1:   
 case case2:
    doSomething();
  break;
}

【讨论】:

  • 如果在运行时从数据库中读取该数组或它的值会怎样
  • 查看我的解决方案@JayKadam
【解决方案2】:

我想在这种情况下我不会使用开关。 我可能会做这样的事情

if(Arrays.asList(yourArray).contains(yourValue)){
   //do something
}else{
   //do something else
}

【讨论】:

    【解决方案3】:

    根据Java Documentation

    开关适用于 byte、short、char 和 int 原始数据 类型。它也适用于枚举类型(在枚举类型中讨论), String 类,以及一些包装某些特定类的特殊类 原始类型:Character、Byte、Short 和 Integer(在 数字和字符串)。

    除非您可以将数据归结为其中之一,否则您只能使用这些数据。你总是可以打破你在语句数组中拥有的东西,但是你不能使用数组来使 switch 动态化。

    【讨论】:

      【解决方案4】:

      除非您特别要求,否则 switch case 语句不会中断。

      因此,对于您的情况,您可以将其用作解决方法,

      switch(code){
       case "height":
       case "HEIGHT": 
       case "weight":
        //code here
        break;
       case something_else:
        break;
      }
      

      【讨论】:

      • 在这里,您的案例与阵列分离。我不认为这在这里是可取的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-21
      • 1970-01-01
      • 2021-03-24
      相关资源
      最近更新 更多