Java - switch case,多个case调用相同的函数

时间:2018-01-12 20:21:10

标签: java switch-statement

由于我有多个String个案例应该以同样的方式处理,我试过:

switch(str) {
// compiler error
case "apple", "orange", "pieapple":
  handleFruit();
  break;
}

但是我收到编译错误。

我是否应该在Java中逐个调用相同的函数:

switch(str) {
  case "apple":
      handleFruit();
       break;
  // repeat above thing for each fruit
  ...
}

没有更简单的风格吗?

3 个答案:

答案 0 :(得分:6)

您必须为每个字符串使用case关键字,如下所示:

switch (str) {
    //which mean if String equals to
    case "apple":      // apple
    case "orange":     // or orange
    case "pieapple":   // or pieapple
        handleFruit();
        break;
}

编辑02/05/2019

Java 12

从Java 12开始,提出了一种新的switch case语法,所以要解决这个问题,方法如下:

switch (str) {
    case "apple", "orange", "pieapple" -> handleFruit();
}

现在,你可以用逗号分隔选项,箭头->然后你想要做的动作。

另一种语法也是:

考虑每个案例都返回一个值,并且您想在变量中设置值,假设handleFruit()返回String旧语法应该是:

String result;  //  <-------------------------- declare 
switch (str) {
    //which mean if String equals to
    case "apple":      // apple
    case "orange":     // or orange
    case "pieapple":   // or pieapple
        result = handleFruit();  //      <----- then assign
        break;
}

现在使用Java 12,你可以这样做:

String result = switch (str) { //  <----------- declare and assign in one shot
    case "apple", "orange", "pieapple" -> handleFruit();
}

语法不错

答案 1 :(得分:5)

Java支持fall-through when您没有break

case "apple":
case "orange":
case "pieapple":
    handleFruit();
    break;

答案 2 :(得分:2)

您收到错误,因为您在案例查询之间使用了逗号。 要定义多个案例,您必须使用半冒号 就像这样。

switch (str) {
case "orange": case "pineapple": case "apple":
     handleFruit();
     break;
}