在我的代码中,程序根据用户输入的文本执行一些操作。我的代码如下:
switch (name) {
case text1: {
//blah
break;
}
case text2: {
//blah
break;
}
case text3: {
//blah
break;
}
case text4: {
//blah
break;
}
但是,案例text1和text4中的代码是相同的。因此,我想知道是否有可能让我实现一些像
case text1||text4: {
//blah
break;
}
我知道||操作符在case语句中不起作用,但是否有类似的东西我可以使用。
Java 12及以上版本
switch (name) {
case text1, text4 -> // do something ;
case text2, text3, text 5 -> // do something else ;
default -> // default case ;
}
你也可以通过switch case表达式来赋值:
String text = switch (name) {
case text1, text4 -> "hello" ;
case text2, text3, text5 -> "world" ;
default -> "goodbye";
};
“产量”关键字
它允许您通过开关大小写表达式返回一个值
String text = switch (name) {
case text1, text4 ->
yield "hello";
case text2, text3, text5 ->
yield "world";
default ->
yield "goodbye";
};
总结:用逗号分隔
switch (name) {
case text1 , text4 -> doX() ;
case text2 -> doY() ;
case text3 -> doZ() ;
}
转换表达式
在Java 14及更高版本中集成了JEP 361: Switch Expressions之后,可以使用新形式的开关标签,在多个值之间使用逗号。
case text1, text4 -> {
//blah
}
或者从其中一个答案中重新措辞演示,比如:-
public class RephraseDemo {
public static void main(String[] args) {
int month = 9;
int year = 2018;
int numDays = 0;
switch (month) {
case 1, 3, 5, 7, 8, 10, 12 ->{
numDays = 31;
}
case 4, 6, 9, 11 ->{
numDays = 30;
}
case 2 ->{
if (((year % 4 == 0) &&
!(year % 100 == 0))
|| (year % 400 == 0))
numDays = 29;
else
numDays = 28;
}
default ->{
System.out.println("Invalid month.");
}
}
System.out.println("Number of Days = " + numDays);
}
}