Cấu trúc SwitchCase:

java-switch


Đơn giản, khi chúng ta cần xử lý các sự kiện liên quan tới nhiều trường hợp giá trị của biến, nếu dùng if - else nhiều thì code sẽ dài, lặp, không mạch lạc, nên chúng ta dùng cấu trúc Switch Case để thay thế! Nó không phải là cách tốt nhất nhưng là phù hợp với nhiều tình huống!

Trong Java, cấu trúc Switch Case được viết như sau: 
PHP:
switch (<biến>) {
case <
giátrị_1> :
  <
khối_lệnh_1>;
  break;
case <
giátrị_2>:
  <
khối_lệnh_2>;
  break;
.
case <
giátrị_n>:
  <
khối_lệnh_n>;
    break;
default:
    <
khốilệnhdefault>;
}
Và nó hoạt động như trong hình dưới:

How-Switch-Case-works-in-Java-Programming-language

Ví dụ: Với yêu cầu sau: Viết chương trình, gán biến nguyên a là 1 giá trị bất kỳ. Nếu a = 1 thì in ra màn hình là "Chủ nhật", a = 2 thì in ra "Thứ Hai", ..... a = 7 thì in ra "Thứ Bảy". Nếu a không trong khoảng [1 ; 7] thì báo "Bạn đã gán sai giá trị, chỉ được gán số nguyên từ 1 tới 7". Chương trình sử dụng Switch Case sẽ được viết như sau:
PHP:
public class SwitchDemo {

    public static 
void main(String[] args) {
        
int a 3;

        switch (
a) {
            case 
1:
                
System.out.println("Chủ nhật");
                break;
            case 
2:
                
System.out.println("Thứ Hai");
                break;
            case 
3:
                
System.out.println("Thứ Ba");
                break;
            case 
4:
                
System.out.println("Thứ Tư");
                break;
            case 
5:
                
System.out.println("Thứ Năm");
                break;
            case 
6:
                
System.out.println("Thứ Sáu");
                break;
            case 
7:
                
System.out.println("Thứ Bảy");
                break;
            default:
                
System.out.println("Bạn đã gán sai giá trị, chỉ được gán số nguyên từ 1 tới 7");
                break;
        }
    }
}
Chú ý:

- Kiểu dữ liệu của biến trong switch chỉ hỗ trợ kiểu dữ liệu: int, byte, short,char, từ JDK 7, hỗ trợ thêm kiểu String và các giá trị truyền vào trong mỗi case thì phải trùng kiểu dữ liệu với biến trong switch.

- Lệnh "break" trong cấu trúc này không phải là bắt buộc phải có thì chương trình mới chạy, bạn có thể không dùng "break" với trường hợp nhất định, nhưng khi đó, chương trình sẽ chạy hết các khối lệnh trong các "case" tiếp theo sau, kể từ khi chương trình tìm được "case" có giá trị truyền vào thỏa mãn, tới khi hết "case" hoặc gặp lệnh "break".

Bạn nên tham khảo 2 video của anh Việt bên Blog StudyAndShare để hiểu rõ hơn về cấu trúc này:




Bài tập về nhà::D


i-code-java-300x352-1705306

Bài 1: Gán biến a là 1 trong các số ngu yên từ 0 đến 9. Viết chương trình in ra tên các chữ số nhập vào bằng tiếng Anh. Ví dụ gán a bằng 1 thì chương trình chạy sẽ in ra “1 đọc là One”, gán a = 2 thì in ra “2 đọc là Two”

Bài 2: Khai báo 2 biến nguyên “thang” và “nam” gán giá trị là tháng và năm.Yêu cầu “thang” thuộc tập hợp [1..12], năm không được âm.
- Nếu gán sai tháng thì báo “Bạn đã nhập sai tháng”, nếu gán sai năm thì báo “Bạn đã gán sai năm”. Khi 1 trong 2 thông tin bị gán sai, những câu lệnh sau sẽ không chạy!
- Nếu năm đó là năm nhuận thì in ra thông báo: Đây là năm nhuận. không thì báo ra là năm thường.
- Dựa vào thông tin năm đó là năm nhuận hay không và giá trị của tháng đó là tháng nào để báo ra tháng đó có bao nhiêu ngày.

3 blogger-facebook:

  1. Tớ làm ntn với bài 2 :
    public class ngaythangvs_switchcase {
    public static void main(String[] args)
    {
    int thang=2,nam=2032;
    if(thang<1||thang>12)
    {
    System.out.println("gan sai thang roi");
    if(nam<0)
    System.out.println("gan sai nam roi");
    }
    else
    {
    if(nam % 4 == 0)

    System.out.println("Day la nam nhuan");
    switch(thang)
    {
    case 1:
    case 3:
    case 5:
    case 7:
    case 8:
    case 10:
    case 12:
    System.out.println(" day la thang" +thang +"co 31 ngay");
    break;
    case 4:
    case 6:
    case 9:
    case 11:
    System.out.println("day la thang" +thang +"co 30 ngay");
    break;
    case 2:
    {
    if(nam % 4 == 0)
    System.out.println("so ngay trong thang " +thang +" la 29 ngay");

    else
    System.out.println("so ngay trong thang " +thang +" la 28 ngay");

    }
    }
    }
    }
    }

    ReplyDelete

 
Top