Java Tutorial

Java Tutorial Java Features C++ vs Java Java History Java Hello World Java Development Kit Java Runtime Environment Java Virtual Machine Difference between JDK, JRE, and JVM Memory Areas in Java Java Operators Java Keywords Primitive Data Types Variables

Java Loops

Java Do While Loop Java While Loop Java For Loop Java Enhanced For Loop

Java Programs

Java Basic Programs Factorial Program in Java Fibonacci Series Program in Java Prime Number Program in Java Palindrome Number Program in Java Armstrong Number Program in Java Anagram Program in Java Pattern Programs in Java Calculator Program in Java Leap Year Program in Java Addition Program in Java Number Pattern Programs in Java Star Pattern Programs in Java Package Program in Java Pyramid Program in Java Sorting Program in Java String Palindrome Program in Java Even Odd Program in Java For Loop Program in Java If Else Program in Java Switch Case Program in Java GCD Program in Java LCM Program in Java Hello Program in Java Matrix Program in Java Menu Driven Program in Java Series Program in Java Client Server Program in Java Swapping Program in Java Pig Latin Program in Java Tower of Hanoi Program in Java Recursion Program in Java Matrix Multiplication Program in Java Perfect Number Program in Java Classes and Objects in Java Example Programs String Programs in Java Array Programs in Java Constructor Program in Java Inheritance Program in Java Abstract class Program in Java Interface Program in Java Encapsulation Program in Java Polymorphism Program in Java Exception Handling Program in Java Multithreading Program in Java Thread Program in Java Collection Programs in Java ArrayList Program in Java Stack Program in Java Applet Program in Java Swing Program in Java JDBC Program in Java How to run Java program in command prompt How to run Java program in Eclipse

Java Sorting

Sorting Algorithms in Java Merge Sort in Java Quick Sort in Java Bubble Sort in Java Insertion Sort in Java Selection Sort in Java Heap Sort in Java Radix Sort in Java Topological Sort in Java Bucket Sort in Java Counting Sort in Java

Java OOPs Concepts

OOPs - Object Oriented Programming Objects and Classes in Java Java Naming Conventions Constructors in Java Java this keyword Java static keyword Inheritance in Java Aggregation in Java Java super keyword Constructor Chaining and Constructor Overloading Java Polymorphism Static and Dynamic Binding in Java Java Abstraction Abstract class in Java Interface in Java Difference between Abstract class and Interface Java final keyword Packages in Java Access Modifiers in Java Java Wrapper classes Java Numbers Java Characters Java Integer Java Boolean Java Arrays Java Command Line Arguments Java strictfp Keyword Java Math

Java Strings

Java Strings Java String Methods StringBuilder in Java StringBuffer in Java Java Regular Expressions StringBuffer vs StringBuilder String vs StringBuffer String vs StringBuilder String Manipulation in Java Java String Concatenation How to Reverse a String in Java String Array in Java How to Compare Two Strings in Java How to Concatenate Two Strings in Java Why String in Immutable in Java java.lang.NumberFormatException for Input String String Pool in Java Java Generate Random String How to take String Input in Java Java String Interview Questions

Java Exceptions

Exception Handling in Java Java try catch Java throw Java throws Difference between throw and throws Java finally Java Custom Exception Java Exception Propagation

Garbage Collection

Automatic Resource Management in Java Java Garbage Collection Java finalize() Java gc() Difference between final, finally and finalize

Multithreading

Multithreading in Java Process and Thread in Java Basic Terms in Multithreading Java Thread creation Thread Scheduler in Java Java Thread class DeadLock in Java

Java IO

Java IO Java Read File Java BufferedWriter Java InputStreamReader Java File Java Read File Line By Line Java FileOutputStream Jar File in Java

Serialization

Java Serialization Java transient

Networking

Java Network Programming Java Socket Programming Java URL Java URLConnection HttpURLConnection in Java Java InetAddress Java DatagramSocket and Java DatagramPacket

AWT

Java AWT

Swing

Swing in Java

Java Collections

Collections in Java Java List Interface ArrayList in Java LinkedList in Java Vector in Java Stack in Java ArrayList vs LinkedList in Java ArrayList vs Vector in Java Java Set Interface HashSet in Java LinkedHashSet in Java TreeSet in Java Java Queue Interface PriorityQueue in Java ArrayDeque in Java Java Map Interface HashMap in Java LinkedHashMap in Java TreeMap in Java Dictionary in Java Hashtable in Java Properties in Java Collections class in Java Java Comparable Java Comparator Comparable vs Comparator in Java

Java Generics

Generics in Java

Java Annotations

Annotations in Java

Java JDBC

Java JDBC Tutorial

Java Differences

Java vs JavaScript Python vs Java Kotlin vs Java Java vs C++ C# vs Java Static vs Non-static in Java C vs Java int vs Integer in Java Stack vs Heap in Java Java Array vs ArrayList

How to

How to run Java program How to set path in Java How to check the Java version in cmd How to install Java in Windows 10 How to run Java program in cmd How to call a method in Java How to sort an array in Java How to iterate HashMap in Java How to write Java program How to create an array in Java How to create a package in Java How to generate random numbers in Java How to input String in Java How to create thread in Java How to find length of String in Java How to sort a string in Java How to use scanner in Java How to achieve multiple inheritance in Java How to run Java program in Eclipse How to call a function in Java How to create array of objects in Java How to create custom exception in Java How to achieve abstraction in Java How to call static method in Java

Java 8 Features

Java 8 Features Lambda Expressions in Java Functional Interface in Java Streams in Java Java Base64 Encoding and Decoding Parallel Arrays Sort in Java

Java 9 Features

Java 9 Tutorial Java 9 Try With Resources Java 9 Interface Private Method

Java Servlet Tutorial

Java Servlets Tutorial

Java JSP Tutorial

Java JSP Tutorial

Hibernate Tutorial

Hibernate Tutorial

Spring Tutorial

Spring Tutorial

Spring MVC Tutorial

Spring MVC Tutorial

Jenkins Tutorial

Jenkins Tutorial

Java Math Methods

Math.abs() Math.acos() Math.addExact() Math.asin() Math.atan () Math.atan2() Math.cbrt() Math.ceil() Math.copysign() Math.cos() Math.cosh() Math.decrementExact() Math.exp() Math.expm1() Math.floor() Math.floorDiv() Math.floorMod() Math.getExponent() Math.hypot() Math.IEEEremainder() Math.incrementExact() Math.log() Math.log10() Math.log1p() Math.max() Math.min() Math.multiplyExact() Math.multiplyFull() Math.negateExact() Math.nextAfter() Math.nextDown() Math.nextUp() Math.pow() Math.random() Math.rint() Math.round() Math.scalb() Math.signum() Math.sin() Math.sinh() Math.sqrt() Math.subtractExact() Math.tan() Math.tanh() Math.toDegrees() Math.toIntExact() Math.toRadians() Math.ulp()

Java String Methods

toCharArray() copyValueOf() endsWith() equals() equalsIgnoreCase() format() getBytes() getChars() hashCode() indexOf() intern() isEmpty() join() lastIndexOf() length() replace() replaceAll() replaceFirst() split() startsWith() subSequence() substring() toLowerCase() toUpperCase() trim() valueOf()

Java Conversion

Java Convert String to int Java Convert int to String Java Convert String to long Java Convert long to String Java Convert String to float Java Convert float to String Java Convert String to double Java Convert double to String Java Convert String to Date Java Convert Date to String Java Convert String to Object Java Convert Object to String Java Convert String to char Java Convert char to String Java Convert int to long Java Convert long to int

Misc

Functional Interfaces in Java Singleton class in Java Awesome explanation of Strings in Java Object class in Java Static class in Java All the important string methods in Java String Handling Method in Java What are Array strings in Java Advantages and Disadvantages of Strings in Java Big Decimal class in Java Class definition in Java Char and String differences in Java Difference between String, StringBuffer and StringBuilder in java Replace character in string Java String Coding Interview Questions in Java What is String in Java? String isnullorempty in Java String Matches in Java Trim Method in String Java Bean class in Java Libraries in Java Arithmetic Operations on String in Java Convert Char array to string in java Check whether Java is installed or not How to calculate time difference in Java How to stop execution after a certain time in Java Jagged Array in Java Java ArraylistRemove() Time Complexity Java Swing Time Picker Zigzag Array in Java

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.



ADVERTISEMENT
ADVERTISEMENT