In my code, the program does something depending on the text entered by the user. My code looks like:
switch (name) {
case text1: {
//bla
switch (name) {
case text1, text4 -> // do something ;
case text2, text3, text 5 -> // do something else ;
default -> // default case ;
}
You can also assign a value through the switch case expression :
String text = switch (name) {
case text1, text4 -> "hello" ;
case text2, text3, text5 -> "world" ;
default -> "goodbye";
};
It allows you to return a value by the switch case expression
String text = switch (name) {
case text1, text4:
yield "hello";
case text2, text3, text5:
yield "world";
default:
yield "goodbye";
};
Just do
case text1: case text4:
do stuff;
break;
Fall through approach is the best one i feel.
case text1:
case text4: {
//Yada yada
break;
}
The case
values are just codeless "goto" points that can share the same entry point:
case text1:
case text4:
//blah
break;
Note that the braces are redundant.
The brackets are unnecessary. Just do
case text1:
case text4:
doSomethingHere();
break;
case text2:
doSomethingElse()
break;
If anyone is curious, this is called a case fallthrough. The ability to do this is the reason why break;
is necessary to end case statements. For more information, see the wikipedia article http://en.wikipedia.org/wiki/Switch_statement.
With the integration of JEP 325: Switch Expressions (Preview) in JDK-12 early access builds, one can now make use of the new form of the switch label as :-
case text1, text4 -> {
//blah
}
or to rephrase the demo from one of the answers, something like :-
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);
}
}
Here is how you can give it a try - Compile a JDK12 preview feature with Maven