由于我有多个String
个案例应该以同样的方式处理,我试过:
switch(str) {
// compiler error
case "apple", "orange", "pieapple":
handleFruit();
break;
}
但是我收到编译错误。
我是否应该在Java中逐个调用相同的函数:
switch(str) {
case "apple":
handleFruit();
break;
// repeat above thing for each fruit
...
}
没有更简单的风格吗?
答案 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开始,提出了一种新的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;
}