Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using two values for one switch case statement

In my code, the program does something depending on the text entered by the user. My code looks like:

switch (name) {         case text1: {             //blah             break;         }         case text2: {             //blah             break;         }         case text3: {             //blah             break;         }         case text4: {             //blah             break;         } 

However, the code inside cases text1 and text4 is the same. I was therefore wondering if it would be possible for me to implement something like

case text1||text4: {             //blah             break;         } 

I know that the || operator won't work in the case statement but is there something similar I can use.

like image 333
Ankush Avatar asked May 23 '13 06:05

Ankush


2 Answers

You can use have both CASE statements as follows.

  case text1:    case text4:{             //blah             break;         } 

SEE THIS EXAMPLE:The code example calculates the number of days in a particular month:

class SwitchDemo {     public static void main(String[] args) {          int month = 2;         int year = 2000;         int numDays = 0;          switch (month) {             case 1:             case 3:             case 5:             case 7:             case 8:             case 10:             case 12:                 numDays = 31;                 break;             case 4:             case 6:             case 9:             case 11:                 numDays = 30;                 break;             case 2:                 if (((year % 4 == 0) &&                       !(year % 100 == 0))                      || (year % 400 == 0))                     numDays = 29;                 else                     numDays = 28;                 break;             default:                 System.out.println("Invalid month.");                 break;         }         System.out.println("Number of Days = "                            + numDays);     } } 

This is the output from the code:

Number of Days = 29 

FALLTHROUGH:

Another point of interest is the break statement. Each break statement terminates the enclosing switch statement. Control flow continues with the first statement following the switch block. The break statements are necessary because without them, statements in switch blocks fall through: All statements after the matching case label are executed in sequence, regardless of the expression of subsequent case labels, until a break statement is encountered.

EXAMPLE CODE:

public class SwitchFallThrough {      public static void main(String[] args) {         java.util.ArrayList<String> futureMonths =             new java.util.ArrayList<String>();          int month = 8;          switch (month) {             case 1:  futureMonths.add("January");             case 2:  futureMonths.add("February");             case 3:  futureMonths.add("March");             case 4:  futureMonths.add("April");             case 5:  futureMonths.add("May");             case 6:  futureMonths.add("June");             case 7:  futureMonths.add("July");             case 8:  futureMonths.add("August");             case 9:  futureMonths.add("September");             case 10: futureMonths.add("October");             case 11: futureMonths.add("November");             case 12: futureMonths.add("December");             default: break;         }          if (futureMonths.isEmpty()) {             System.out.println("Invalid month number");         } else {             for (String monthName : futureMonths) {                System.out.println(monthName);             }         }     } } 

This is the output from the code:

August September October November December 

Using Strings in switch Statements

In Java SE 7 and later, you can use a String object in the switch statement's expression. The following code example, , displays the number of the month based on the value of the String named month:

public class StringSwitchDemo {      public static int getMonthNumber(String month) {          int monthNumber = 0;          if (month == null) {             return monthNumber;         }          switch (month.toLowerCase()) {             case "january":                 monthNumber = 1;                 break;             case "february":                 monthNumber = 2;                 break;             case "march":                 monthNumber = 3;                 break;             case "april":                 monthNumber = 4;                 break;             case "may":                 monthNumber = 5;                 break;             case "june":                 monthNumber = 6;                 break;             case "july":                 monthNumber = 7;                 break;             case "august":                 monthNumber = 8;                 break;             case "september":                 monthNumber = 9;                 break;             case "october":                 monthNumber = 10;                 break;             case "november":                 monthNumber = 11;                 break;             case "december":                 monthNumber = 12;                 break;             default:                  monthNumber = 0;                 break;         }          return monthNumber;     }      public static void main(String[] args) {          String month = "August";          int returnedMonthNumber =             StringSwitchDemo.getMonthNumber(month);          if (returnedMonthNumber == 0) {             System.out.println("Invalid month");         } else {             System.out.println(returnedMonthNumber);         }     } } 

The output from this code is 8.

FROM Java Docs

like image 100
PSR Avatar answered Oct 11 '22 00:10

PSR


You can do the following to use multiple cases for one switch statement:

case "firstCase": case "secondCase": {     // Run code here for both cases } 
like image 39
Grijesh Chauhan Avatar answered Oct 11 '22 00:10

Grijesh Chauhan