Câu lệnh switch case trong java

Toán tử switch cho phép ta nhảy vào 1 hoặc nhiều case dựa vào biểu thức nguyên.

switch(biểu thức)
{
case n1:
    Khối lệnh 1;
    break;
case n2:
    Khối lệnh 2;
    break;
…
case nk:
    Khối lệnh k;
    break;
default:
    Khối lệnh (k+1);
}

Biểu thức đi sau lệnh switch có thể là kiểu dữ liệu nguyên thủy số nguyên (byte, short, int, char), kiểu enum, chuỗi và một số wrapper class như Byte, Short, Integer
Hoạt động của switch(biểu thức) phụ thuộc vào giá trị của biểu thức đi sau switch
– Nếu giá trị này bằng ni thì chương trình sẽ nhảy tới case nk và thực hiện khối lệnh k
– Nếu giá trị này không thỏa mãn tất cả các giá trị của các case thì cách làm việc của chương trình lại phụ thuộc vào sự có mặt của default:
+ Nếu có mặt default, thì chương trình sẽ nhảy đến case default
+ Nếu không có default, thì sẽ nhảy ra khỏi toán tử switch

Kết thúc toán tử switch
– Chương trình sẽ ra khỏi toán tử switch khi gặp lệnh break hoặc gặp dấu } cuối cùng của switch.
Chú ý : Khi nhảy đến 1 case nào đó, thì hoạt động tiếp theo của chương trình phụ thuộc vào các câu lệnh trong case này. Chương trình sẽ thực hiện được các câu lệnh cho đến khi gặp từ khóa break,goto,return.
– Nếu không có từ khóa break trong các case thì chương trình thực hiện hết case ni sẽ nhảy tiếp đến case n(i+1).
– Nếu mỗi khối lệnh kết thúc bằng từ khóa break thì toán tử switch sẽ chỉ thực hiện 1 trong các khối lệnh.

Ví dụ 1: Sử dụng số nguyên trong switch case
Nhập vào tháng, năm. In ra số ngày trong tháng, năm đó.
GuessDate.java

package net.vncoding;

public class GuessDate {

    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);
    }
}

Kết quả:
Number of Days = 29

Ví dụ 2: Sử dụng chuỗi trong switch case.
Nhập vào mã quốc gia (vn: Vietnam, cn: China,…). In ra tên quốc gia tương ứng với mã.

package net.vncoding;

import java.util.Scanner;

public class Country {

    public static void main(String[] args) {
        
        System.out.print("Enter a domain:");

        Scanner sc = new Scanner(System.in);
        String domain = sc.nextLine();

        domain = domain.trim().toLowerCase();

        switch (domain) {

            case "vn":
                System.out.println("Vietnam");
                break;

            case "cn":
                System.out.println("China");
                break;

            case "jp":
                System.out.println("Japan");
                break;

            case "us":
                System.out.println("United States");
                break;

            default:
                System.out.println("Unknown");
                break;
        }
        sc.close();
    }
}

Kết quả:
Enter a domain:vn
Vietnam

Enter a domain:cn
China

Enter a domain:fr
Unknown

Ví dụ 3: Sử dụng wrapper class trong switch case.
Viết phương thức với input là đối tượng String và giá trị trả về là giá trị tháng kiểu số nguyên.
StringSwitchDemo.java

package net.vncoding;

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 = "SepTemBer";

        int returnedMonthNumber =
            StringSwitchDemo.getMonthNumber(month);

        if (returnedMonthNumber == 0) {
            System.out.println("Invalid month");
        } else {
            System.out.println(returnedMonthNumber);
        }
    }
}

Phương thức getMonthNumber() sử dụng lệnh switch case để convert giá trị đầu vào kiểu String thành kiểu số nguyên.

Kết quả:
9

Be the first to comment

Leave a Reply