×

Switch Case Program in Java

Switch Case Program in Java

The switch case program in Java controls which code snippet gets executed on the basis of the value of the expression mentioned in the switch statement. It is similar to the if-else ladder statements that controls the flow of the program. However, the switch case program is more readable as compared to the if-else statements. The basic syntax of the switch case is mentioned below.

switch (expression)
{
               case valOfCase1:
                               // body of the first case, to be executed
                               // if the value of the expression is equal to valOfCase1.
               break;
               case valOfCase2:
                               // body of the second case, to be executed if
                               // the expression is equal to valOfCase2.
               break;
               ...
               ...
               default:
                               // body of the default case, to be executed if
                               // any of the above case does not execute.
  } 

Observe the following switch program.

Filename: SwitchCaseExample.java

public class SwitchCaseExample
{             
public static void main(String argvs[])
{
               String fruit = "Mango"; // the given fruit
               // The switch block is taking fruit as its expression
               // and displaying result accordingly
               switch(fruit)
               {
                               case "Lichi":
                                              System.out.println("The color of the Lichi is red.");
                                              break;
                               case "Mango":
                                              System.out.println("The color of the Mango is yellow.");
                                              break;
                               case "Sweet Lime":
                                              System.out.println("The color of the Sweet Lime is green.");
                                              break;
                               case "Grapes":
                                              System.out.println("The color of the Grapes is light green.");
                                              break;
                               // The default case: no value provided
                               default :
                                              System.out.println("Please provide a valid input.");
               }
}
} 

Output:

The color of the Mango is yellow.

Explanation: We have taken the variable fruit as the expression of the switch statement whose value is Mango. This value matches with the second case, and hence, only the body of the second case is executed. Please note that values of the different cases of the switch block are case sensitive. Thus, mango and Mango are different. If we replace the value of the fruit variable from Mango to mango, then the default case gets the chance to execute. The default case never comes with a value. It is worth mentioning that break statements also play a very important role in deciding the output.

Importance of break statements & flow diagram of switch case

The flow diagram of the switch case in Java is given below.

The above flow diagram is valid only when we have used break statements in our code. The output changes dramatically when the break statements are commented. Observe the below-written code.

Filename: SwitchCaseExample1.java

public class SwitchCaseExample1
{             
public static void main(String argvs[])
{
               String fruit = "Mango"; // the given fruit
               // The switch block is taking fruit as its expression
               // and displaying result accordingly
               switch(fruit)
               {
                               case "Lichi":
                                              System.out.println("The color of the Lichi is red.");
                                              break;
                               case "Mango":
                                              System.out.println("The color of the Mango is green.");
                                              // break;
                               case "Sweet Lime":
                                              System.out.println("The color of the Sweet Lime is green.");
                                              // break;
                               case "Grapes":
                                              System.out.println("The color of the Grapes is light green.");
                                              // break;
                               // The default case: no value provided
                               default :
                                              System.out.println("The fruit is unknown.");
               }
}
} 

Output:

The color of the Mango is green.
The color of the Sweet Lime is green.
The color of the Grapes is light green.
The fruit is unknown. 

Explanation: The first case does not work because the expression value is not matching with the case value. For the second case, the expression value matches and its body is executed. But there is no break statement in the body of the second case. Therefore, the control reaches the body of the third case and executes the statements. There also the break statement is commented. Hence, the control moves to the fourth case and executes its statements. The control still did not find the break statement and thus enter the default section, eventually and then exits from the switch case block.

Thus, the flow diagram of the Java switch case without break statements is given below.

Nesting of Java Switch Case

We can even do the nesting of switch case. The following program does the same.

Filename: SwitchCaseExample2.java

public class SwitchCaseExample2
{             
public static void main(String argvs[])
{ 
    //P - Physics, C - Chemistry, M - Mathematics
    char sub = 'M';                  
    int std = 8; // For class 8
    // This switch case is displaying a few chapters of subjects Physics, Chemistry, and  
    // Mathematics for classes 7, 8, 9, and 10.
    switch( std ) 
    { 
        case 7: 
            switch( sub )   // Nested switch case 
            {
               // A few chapters of Physics, Chemistry, and Mathematics for class 7
                case 'P': 
                    System.out.println("Motion and Time, Light, Electric Current and its Effects"); 
                    break; 
                case 'C': 
                    System.out.println("Acids, Bases and Salts, Physical and Chemical Changes"); 
                    break; 
                case 'M': 
                    System.out.println("Lines and Angles, Integers, Rational Numbers"); 
                    break;
                default:
                    System.out.println("Subject not found.");
            } 
            break;
        case 8: 
            switch( sub )   // Nested switch case 
            { 
               // A few chapters of Physics, Chemistry, and Mathematics for class 8
                case 'P': 
                    System.out.println("Friction, Sound, Light"); 
                    break; 
                case 'C': 
                    System.out.println("Metals and Non-Metals, Chemical Effects of Electric Current"); 
                    break; 
                case 'M': 
                    System.out.println("Mensuration, Factorization, Data Handling"); 
                    break;
                default:
                    System.out.println("Subject not found.");
            } 
            break; 
        case 9: 
            switch( sub )   // Nested switch case 
            { 
               // A few chapters of Physics, Chemistry, and Mathematics for class 9
                case 'P': 
                    System.out.println("Motion, Force and Work, Sound"); 
                    break; 
                case 'C': 
                    System.out.println("Matter-Nature and Behavior, Structure of atoms:"); 
                    break; 
                case 'M': 
                    System.out.println("Polynomials, Triangles, Circles"); 
                    break;
                default:
                    System.out.println("Subject not found."); 
            } 
            break; 
        case 10: 
            switch( sub ) // Nested switch case 
            {
               // A few chapters of Physics, Chemistry, and Mathematics for class 10
                case 'P': 
                    System.out.println("Effects of Current, Natural Phenomena"); 
                    break; 
                case 'C': 
                    System.out.println("Chemical Substances – Nature and Behavior, Periodic Classification Of Elements"); 
                    break; 
                case 'M': 
                    System.out.println("Polynomials, Triangles, Introduction to Trigonometry"); 
                    break; 
                default:
                    System.out.println("Subject not found."); 
            } 
            break; 
        default:
            System.out.println("Class not found."); 
    } 
}
} 

Output:

Mensuration, Factorization, Data Handling

Explanation: We have used switch case inside different cases. This is called nesting. The std variable handles the class, and the sub variable deals with the subject. The case of value 8 (std = 8 in our case) is selected, and inside that case, we execute the case handling the subject Mathematics (sub = ‘M’).

Applications of Java Switch Case

Java switch case is used in various situations. The following examples illustrate some usages of Java Switch Case.

To Check Vowels and Consonants

Filename: SwitchCaseExample3.java

public class SwitchCaseExample3
{             
public static void main(String argvs[]) 
{ 
    char c='E'; // input character
    // Distinguishing between vowels and consonants
    // This switch case handles case-sensitiveness
    switch(c) 
    { 
        case 'a':  
            System.out.println("a is the vowel."); 
            break; 
        case 'A':  
            System.out.println("A is the vowel."); 
            break; 
        case 'e':  
            System.out.println("e is the vowel."); 
            break; 
        case 'E':  
            System.out.println("E is the vowel."); 
            break; 
        case 'i':  
            System.out.println("i is the vowel."); 
            break; 
        case 'I':  
            System.out.println("I is the vowel."); 
            break; 
        case 'o':  
            System.out.println("o is the vowel."); 
            break; 
        case 'O':  
            System.out.println("O is the vowel."); 
            break; 
        case 'u':  
            System.out.println("u is the vowel."); 
            break; 
        case 'U':  
            System.out.println("U is the vowel."); 
            break; 
        default:  
            System.out.println(ch + " is the consonant."); 
    }
}
} 

Output:

E is the vowel.

Explanation: Any character barring a, A, e, E, i, I, o, O, u, U is consonant. The characters A, a, e, E, i, I, o, O, u, U are vowels. On the basis of the definition of vowels and consonants, we have written our code. Each case block handles one vowel. The default block deals with the consonants.

Displaying the Months of a Year

Filename: SwitchCaseExample4.java

public class SwitchCaseExample4
{             
public static void main(String argvs[]) 
{ 
    int month= 10; // the given number
    // This switch case does one to one mapping of number to its corresponding months
    // of a year.
    switch(month) 
    { 
        case 1:  
            System.out.println("The month is January."); 
            break; 
        case 2:  
            System.out.println("The month is February."); 
            break; 
        case 3:  
            System.out.println("The month is March."); 
            break; 
        case 4:  
            System.out.println("The month is April."); 
            break; 
        case 5:  
            System.out.println("The month is May."); 
            break; 
        case 6:  
            System.out.println("The month is June."); 
            break; 
        case 7:  
            System.out.println("The month is July."); 
            break; 
        case 8:  
            System.out.println("The month is August."); 
            break; 
        case 9:  
            System.out.println("The month is September."); 
            break; 
        case 10:  
            System.out.println("The month is October."); 
            break;
        case 11:  
            System.out.println("The month is November."); 
            break;
        case 12:   
            System.out.println("The month is December."); 
            break;
        default:  
            System.out.println("Invalid month"); 
    }
}
} 

Output:

The month is October.

Explanation: We have only 12 months in a year. Therefore, the first 12 natural number represents 12 months anything else becomes invalid, which is handled by the default case.

Another application of the Java switch case is the basic calculator, which we have already discussed earlier.

Difference Between Java Switch Case and if-else ladder

As far as execution time is concerned, the Java switch-case is better than the Java if-else ladder. Because every case in a switch block is completely independent of any other case present in that switch-case, whereas, in an if-else, the else is dependent on the expression present in the if statement. Hence, the independence of the cases, the compiler is able to do the re-ordering to make the execution faster for a switch-case.

We know that both the Java switch case and if-else are decision making statements. Also, whatever we can do with the switch case can be done by if-else statements too. However, the reverse of it is not true. Let’s understand the concept through a Java program.

Suppose, if the input number is between 0 to 100, we print India, and if it is greater than 100, we print America. Finally, for those numbers that are less than 0, we print Russia. The code snippet of this scenario using the if-else will be:

    if(no >=0 and no <= 100)
        System.out.println("India");
    else if(no > 100)
        System.out.println("America");
    else
        System.out.println("Russia"); 

To do the same thing using the switch case is impossible because the cases inside the switch block deal with the specific values, not with the ranges.


Related Topics

Shopping Bill in Java

Java Shopping Bill Here in this program, we are about to create a JAVA class called Products which will have some properties or attributes like prod_name (Product Name ), qty (quantity),...

4 minutes read.

Producer consumer problem in Java using Synchronised block

The producer-consumer problem in Java, commonly known as the bounded-buffer problem, is a well-known multi-process synchronization challenge where we attempt to synchronize many processes. Two processes are involved in the producer-consumer problem:...

3 minutes read.

Check whether a Number is a Power of 4 or Not in Java

There are many ways to figure out if an integer is a power of 4. This section will go over a variety of techniques for figuring out whether or not...

11 minutes read.

Java Math sin() Method

The sin() method of Java Math class returns the trigonometric sine of the specified angle. Syntax: public static double sin(double a) Parameters: The parameter ‘a’ represents an angle measured in radians. Return Value: The sin() method...

1 minute read.

Maximizing Profit in Stock Buy Sell in Java

In this tutorial, we will deal with a popular problem, a favourite of interviewers. The problem is named as Maximising profit in stock Buy Sell. we will see certain approaches...

6 minutes read.

Java inheritance with Example

Java inheritance Java inheritance is a mechanism in which a child object acquires all the properties and behaviors of a parent object. It helps in reusing the code and establishes...

7 minutes read.

Hashtable in Java

Hashtable in Java The Hashtable class implements the Map interface and extends the Dictionary class. It implements a hash table which shows the key-value relation, i.e., it maps the keys to the values....

9 minutes read.

Advanced Java Viva Questions

One of the more difficult languages available now is Java. Currently, 10 thousand developers worldwide use the programming language, which is rising daily. So, if you're a Java developer, an aspiring...

9 minutes read.

Access modifiers in Java

Access modifiers in Java with Example In Java, there are two types of access modifiers one is a non-access modifier, and other is access modifier. If we talk about access modifier, there...

3 minutes read.

Java Math sinh() Method

The sinh() method of Java Math class returns the hyperbolic sine of the specified double value. Syntax: public static double sinh(double x) Parameters: The parameter ‘a’ represents the number whose hyperbolic sine is to...

2 minutes read.

Program to Find the Common Elements between two Arrays in Java

In this article, we are going to learn how to find the common elements between two arrays using Java. Here, we use different approaches in Java to find the common...

3 minutes read.

Java String Concatenation

Java String Concatenation Java programming provide a way to combine multiple strings into a single string. It is called as String Concatenation. There are different ways to concatenate two or more...

4 minutes read.

Java While Loop

A while loop is used to repeatedly execute a set of statements as long as its condition evaluates to true. This loop checks the condition before it starts the execution...

1 minute read.

Java HashMap

Java HashMap extends AbstractMap and implements Map interface. It is the collection of multiple entries where an entry consists of key and value pair. The HashMap can contain only one...

7 minutes read.

Find next greater number with same set of digits in Java

It contains a number (num). Finding the smallest number that has the same number of elements as num that is also larger than num is the task at hand. If...

8 minutes read.

Leap Year Program in Java

Leap Year Program in Java: A leap year is a calendar year that have an extra day i.e. 366 days instead of 365 days is called leap year. In other...

2 minutes read.

How Many Ways to Create Objects in Java

Introduction Java comes under the category of object-oriented programming languages. Since it is object-oriented, everything in Java is considered an object. Java is a diverse programming language that is designed to...

6 minutes read.

How to Send SMS in Java with Example

Sending SMS messages in Java is a fairly common task, and there are a number of libraries and APIs available to help you do it. One popular option is to...

2 minutes read.

Construct the Largest Number from the Given Array in Java

In this section, we will create a Java programme that will enable you to locate the greatest integer in an array. The programme will begin comparing the array's numbers with...

3 minutes read.

Two Decimal Places Java

When a double data type is used in Java before a variable, this indicates 15 digits after decimal point. However, there are situations when we only require 2 decimal places...

4 minutes read.