Search…

Cấu Trúc Điều Khiển Trong Java - Phần 1: Cấu Trúc Rẽ Nhánh

23/09/20204 min read
Hướng dẫn cấu trúc rẽ nhánh if-else và switch-case trong Java.

Cấu trúc rẽ nhánh if, if-else

Cấu trúc rẽ nhánh cơ bản if

Cú pháp

if(conditional) {
    statement1;
    statement2;
}

Mô tả thực thi

if else trong Java.
  • Nếu conditional trả về true, thực thi khối statement1 và statement2.
  • Nếu conditional trả về false thì bỏ qua khối này.

Cấu trúc rẽ nhánh mở rộng if-else

Cú pháp

if(conditional) {
    statement1;
    statement2;
}
else {
    statement3;
    statement4;
}

Mô tả thực thi

if else trong Java.

Nếu conditional trả về true, thực thi khối statement1statement2.

Nếu conditional trả về false, thực thi khối statement3statement4.

Ví dụ

int x = 3;
if(x > 2) {
    System.out.println("X > 2");
}
else {
    System.out.println("X <= 2");
}

Ngoài ra, ngôn ngữ lập trình Java hỗ trợ cấu trúc dạng mở rộng hơn, gồm nhiều cấu trúc if-else lồng nhau dạng như sau:

if(conditional) {
    statement1;
}
else {
    if(conditional2) {
        statement2;
    }
    else {
        statement3;
    }
}
  • Nếu conditional trả về true, thực thi statement1.
  • Nếu conditional trả về false, xét tiếp khối else như sau:
    • Nếu conditional2 trả về true,thực thi statement2.
    • Nếu conditional2 trả về false, thực thi statement3.

Các cấu trúc rẽ nhánh dạng cao hơn (nhiều if-else lồng nhau) cũng được thực thi tương tự.

Cấu trúc rẽ nhánh switch-case

Quan điểm sử dụng

Cần xét các tháng trong 1 năm, sẽ cần nhiều cấu trúc rẽ nhánh dạng if, if-else hoặc các dạng mở rộng hơn để xét 12 tháng, như vậy tổ chức sẽ có thể rối, Java hỗ trợ thêm cấu trúc switch-case cho các trường hợp lựa chọn với những điều kiện giống nhau này để cách tổ chức code gọn gàng hơn.

Cấu trúc switch-case

Cú pháp

switch(expression) {
    case (value1):
        statement1;
        break;
    case (value2):
        statement2;
        break;
    default:
        statement4;
        break;
}

Mô tả thực thi

Cấu trúc switch case trong Java.

 

  • Bước 1: Tính toán biểu thức (expression).
  • Bước 2: So sánh từng trường hợp (case) theo thứ tự từ trên xuống, với kết quả của expression đã tính toán ở bước 1.
    • Nếu 1 trong các case thỏa mãn (bằng) với expression, thì thực thi khối mã xử lý trong case đó. Sau đó đến bước 3.
    • Nếu không, thực thi khối default.
  • Bước 3: Sau khi thực hiện khối, có thể 1 trong các khối case hoặc default (tùy theo giá trị của expression), sẽ thực hiện break, nghĩa l thoát khỏi khối switch-case.

Lưu ý

Có thể có nhiều hơn 2 case, trong phần cú pháp và mô tả thực thi chỉ thực hiện với 2 case ngắn gọn. Trong cú pháp của switch-case, có thể không viết phần default. Sau khi kiểm tra nếu không có case nào thỏa mãn, chương trình sẽ tự động thoát ra khỏi khối lệnh switch-case.

Ví dụ so sánh if-else và switch-case

Sử dụng cấu trúc dạng if-else
int month = 2;
if(month == 1)                 System.out.println("January");
if(month == 2)                 System.out.println("February");
if(month == 3)                 System.out.println("March");
if(month == 4)                 System.out.println("April");
if(month == 5)                 System.out.println("May");
if(month == 6)                 System.out.println("June");
if(month == 7)                 System.out.println("July");
if(month == 8)                 System.out.println("August");
if(month == 9)                 System.out.println("September");
if(month == 10)                System.out.println("October");
if(month == 11)                System.out.println("November");
if(month == 12)                System.out.println("December");
if(month < 1 || month > 12)    System.out.println("Error");
Sử dụng cấu trúc dạng switch-case
int month = 2;
switch(month) {
case 1:
	System.out.println("January");	break;
case 2:
	System.out.println("February");	break;
case 3:
	System.out.println("March");	break;
case 4:
	System.out.println("April");	break;
case 5:
	System.out.println("May");	break;
case 6:
	System.out.println("June");	break;
case 7:	
	System.out.println("July");	break;
case 8:
	System.out.println("August");	break;
case 9:
	System.out.println("September");break;
case 10:
	System.out.println("October");	break;
case 11:
	System.out.println("November");	break;
case 12:
	System.out.println("December"); break;
default:
	System.out.println("Error"); 	break;
}

Trong mỗi case, khi đoạn mã thực thi, phải thêm vào mã xử lý break, tránh trường hợp chương trình tiếp tục thực thi các case không mong muốn bên dưới.

Sử dụng switch-case có thể không làm mã nguồn trở nên ngắn hơn, nhưng nó giúp cho mã nguồn rõ ràng, dễ hiểu hơn, đôi khi cải thiện hiệu suất hoạt động của chương trình.

IO Stream

IO Stream Co., Ltd

30 Trinh Dinh Thao, Hoa Thanh ward, Tan Phu district, Ho Chi Minh city, Vietnam
+84 28 22 00 11 12
developer@iostream.co

383/1 Quang Trung, ward 10, Go Vap district, Ho Chi Minh city
Business license number: 0311563559 issued by the Department of Planning and Investment of Ho Chi Minh City on February 23, 2012

©IO Stream, 2013 - 2024