Java Switch Statements

Java Switch Statements: Efficient Decision Making with Multiple Cases

The switch statement in Java is a powerful conditional tool that offers a cleaner and more efficient way to handle multiple possible values of a variable. Instead of using multiple if-else statements, the switch statement allows for neater, easier-to-read code, especially when dealing with fixed values. Let’s delve into the syntax, use cases, and variations of the switch statement in Java, and then practice with some exercises.


1. What is a Switch Statement?

A switch statement in Java evaluates the value of a variable (known as the switch expression) and executes the code in the matching case. This is particularly useful when you have a variable with a known set of possible values, like days of the week, months, or menu options.

2. Basic Syntax of the Switch Statement

Here’s the general syntax for a switch statement:

switch (expression) {
case value1:
// Code to execute if expression equals value1
break;
case value2:
// Code to execute if expression equals value2
break;
// more cases
default:
// Code to execute if expression does not match any case
}

Important Notes:

  • Expression: The expression inside switch can be of int, char, byte, short, String, or enum type.
  • Cases: Each case defines a value to match against the switch expression.
  • break Statement: The break statement prevents the code from falling through to the next case. If omitted, the code will continue to the next case regardless of the match.
  • Default Case: The default case is optional and runs if no other case matches the switch expression.

3. How the Switch Statement Works

The switch statement evaluates the expression and checks each case from top to bottom. If a match is found, it executes the corresponding block of code until it encounters a break statement or reaches the end of the switch block. If no match is found, it executes the default case if present.

Example:

int day = 3;

switch (day) {
case 1:
System.out.println("Monday");
break;
case 2:
System.out.println("Tuesday");
break;
case 3:
System.out.println("Wednesday");
break;
case 4:
System.out.println("Thursday");
break;
case 5:
System.out.println("Friday");
break;
case 6:
System.out.println("Saturday");
break;
case 7:
System.out.println("Sunday");
break;
default:
System.out.println("Invalid day");
}

If day is 3, this code will print "Wednesday". The break statement after each case prevents the code from “falling through” to subsequent cases.


4. The Default Case

The default case in a switch statement is optional but useful as a fallback if no other case matches. It’s similar to the else statement in an if-else structure.

int month = 13;

switch (month) {
case 1:
System.out.println("January");
break;
case 2:
System.out.println("February");
break;
case 3:
System.out.println("March");
break;
// Other cases
default:
System.out.println("Invalid month");
}

Here, if month is 13, it doesn’t match any of the cases, so it executes the default case, printing "Invalid month".


5. Fall-Through in Switch Statements

By default, Java switch statements fall through, meaning that if a break statement is omitted, execution will continue to the next case. While often avoided, fall-through can be useful for grouping cases that should produce the same result.

Example with Fall-Through:

char grade = 'B';

switch (grade) {
case 'A':
case 'B':
System.out.println("Good job!");
break;
case 'C':
System.out.println("You can improve.");
break;
case 'D':
case 'F':
System.out.println("Needs more effort.");
break;
default:
System.out.println("Invalid grade");
}

In this example, both A and B print "Good job!", since there’s no break after case 'A'.


6. Enhanced Switch Statements (Java 12 and Later)

Starting from Java 12, Java introduced an enhanced switch expression with a new syntax, which reduces the need for break statements and allows returning a value from the switch block.

Example of Enhanced Switch:

int day = 3;
String dayName = switch (day) {
case 1 -> "Monday";
case 2 -> "Tuesday";
case 3 -> "Wednesday";
case 4 -> "Thursday";
case 5 -> "Friday";
case 6 -> "Saturday";
case 7 -> "Sunday";
default -> "Invalid day";
};
System.out.println(dayName);

In this enhanced switch expression, we use the -> syntax to directly assign values, simplifying the structure.


Exercises

Exercise 1: Simple Calculator

Write a Java program that performs basic arithmetic operations (+, -, *, /) based on user input using a switch statement.

import java.util.Scanner;

public class SimpleCalculator {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter first number: ");
double num1 = scanner.nextDouble();

System.out.print("Enter an operator (+, -, *, /): ");
char operator = scanner.next().charAt(0);

System.out.print("Enter second number: ");
double num2 = scanner.nextDouble();

double result;

switch (operator) {
case '+':
result = num1 + num2;
break;
case '-':
result = num1 - num2;
break;
case '*':
result = num1 * num2;
break;
case '/':
if (num2 != 0) {
result = num1 / num2;
} else {
System.out.println("Cannot divide by zero");
return;
}
break;
default:
System.out.println("Invalid operator");
return;
}

System.out.println("The result is: " + result);
}
}

Exercise 2: Day of the Week

Create a program that asks the user for a day number (1 for Monday, 2 for Tuesday, etc.) and prints the name of the day.

import java.util.Scanner;

public class DayOfWeek {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter a number (1-7): ");
int day = scanner.nextInt();

switch (day) {
case 1:
System.out.println("Monday");
break;
case 2:
System.out.println("Tuesday");
break;
case 3:
System.out.println("Wednesday");
break;
case 4:
System.out.println("Thursday");
break;
case 5:
System.out.println("Friday");
break;
case 6:
System.out.println("Saturday");
break;
case 7:
System.out.println("Sunday");
break;
default:
System.out.println("Invalid day number");
}
}
}

Exercise 3: Grade Classification

Write a program that takes a letter grade (A, B, C, D, F) as input and prints a message corresponding to the grade.

import java.util.Scanner;

public class GradeClassification {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter your grade (A, B, C, D, F): ");
char grade = scanner.next().toUpperCase().charAt(0);

switch (grade) {
case 'A':
System.out.println("Excellent!");
break;
case 'B':
System.out.println("Good job!");
break;
case 'C':
System.out.println("Fair performance.");
break;
case 'D':
System.out.println("Needs improvement.");
break;
case 'F':
System.out.println("Failed.");
break;
default:
System.out.println("Invalid grade entered.");
}
}
}

Summary

The switch statement in Java is a valuable tool for managing multiple conditions with improved readability and efficiency. Whether you’re categorizing values, performing specific tasks based on user input, or grouping conditions, switch provides a powerful alternative to if-else statements. By practicing with the exercises, you can master using the switch statement effectively in your Java programs.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top