The switch Statement example in Java

By: Kamini Viewed: 172803 times  Printer Friendly Format    


Unlike if-then and if-then-else, the switch statement allows for any number of possible execution paths. A switch works with the byte, short, char, and int primitive data types. It also works with enumerated types and a few special classes that "wrap" certain primitive types: Character, Byte, Short, and Integer.

The following program, SwitchDemo, declares an int named month whose value represents a month out of the year. The program displays the name of the month, based on the value of month, using the switch statement.

 

class SwitchDemo {
    public static void main(String[] args) {

        int month = 8;
        switch (month) {
            case 1:  System.out.println("January"); break;
            case 2:  System.out.println("February"); break;
            case 3:  System.out.println("March"); break;
            case 4:  System.out.println("April"); break;
            case 5:  System.out.println("May"); break;
            case 6:  System.out.println("June"); break;
            case 7:  System.out.println("July"); break;
            case 8:  System.out.println("August"); break;
            case 9:  System.out.println("September"); break;
            case 10: System.out.println("October"); break;
            case 11: System.out.println("November"); break;
            case 12: System.out.println("December"); break;
            default: System.out.println("Invalid month.");break;
        }
    }
}

In this case, "August" is printed to standard output.

The body of a switch statement is known as a switch block. Any statement immediately contained by the switch block may be labeled with one or more case or default labels. The switch statement evaluates its expression and executes the appropriate case.

Of course, you could also implement the same thing with if-then-else statements:

int month = 8;
if (month == 1) {
    System.out.println("January");
} else if (month == 2) {
    System.out.println("February");
}
. . . // and so on

Deciding whether to use if-then-else statements or a switch statement is sometimes a judgment call. You can decide which one to use based on readability and other factors. An if-then-else statement can be used to make decisions based on ranges of values or conditions, whereas a switch statement can make decisions based only on a single integer or enumerated value.

Another point of interest is the break statement after each case. 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, case statements fall through; that is, without an explicit break, control will flow sequentially through subsequent case statements. The following program, SwitchDemo2, illustrates why it might be useful to have case statements fall through:

class SwitchDemo2 {
    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 program.

    Number of Days = 29

Technically, the final break is not required because flow would fall out of the switch statement anyway. However, we recommend using a break so that modifying the b is easier and less error-prone. The default section handles all values that aren't explicitly handled by one of the case sections.



Most Viewed Articles (in Java )

Latest Articles (in Java)

Comment on this tutorial

Subscribe to Tutorials

Related Tutorials

Archived Comments

1. why it is( ((year % 4 == 0) && !(year % 10
View Tutorial          By: Jai Shankar K at 2012-04-08 10:15:56

2. @Jai Shankar K

I'm guessing you are

View Tutorial          By: Nick Scroggs at 2013-03-26 01:44:04

3. import java.util.Scanner;
public class Swit

View Tutorial          By: srinath at 2013-04-28 10:17:24

4. its a big help!..thankz
View Tutorial          By: mezer at 2013-07-17 05:34:07

5. How would you use a switch statement to determine
View Tutorial          By: Shivak at 2013-09-27 01:48:41

6. Write a program to input the number and use switch
View Tutorial          By: abdulaziz at 2014-03-28 16:22:35

7. I need to get the brief notes on this example

View Tutorial          By: Racchana Srini at 2014-07-29 07:50:22

8. find gud looking hasband and well educated
View Tutorial          By: manpreet kaur at 2014-09-10 11:10:53

9. can for statement be used in a switch statement fo
View Tutorial          By: Osei Quadwo at 2014-10-08 20:12:17

10. I want to using swith with string...
How to

View Tutorial          By: anuj at 2015-03-04 18:22:29

11. nice
View Tutorial          By: utkarsh at 2015-03-10 03:18:26

12. if ((year % 4 == 0) && (year % 400 == 0) )
View Tutorial          By: nav at 2017-03-09 04:55:17