Cấu trúc Điều khiển (if-else, switch-case)

Đăng ngày: 22-08-2025 14:45
học javajava cho người mới bắt đầujava cơ bảnlập trình javalệnh if trong javalệnh else iflệnh switch casecấu trúc điều khiển

Chào mừng bạn đến với bài 3 của series "Chinh Phục Java"! Ở bài trước, chúng ta đã tìm hiểu về biến và các phép toán. Bạn đã biết cách lưu trữ và tính toán với dữ liệu. Hôm nay, chúng ta sẽ tiến một bước quan trọng. Chúng ta sẽ học cách làm cho chương trình trở nên thông minh hơn. Nó có thể tự đưa ra quyết định dựa trên các điều kiện khác nhau. Điều này được thực hiện nhờ các **cấu trúc điều khiển**.

1. Lệnh `if`: Khi điều kiện là đúng

Hãy tưởng tượng bạn ra quyết định trong đời thực. Ví dụ: "Nếu trời mưa, tôi sẽ mang theo ô". Lệnh `if` trong Java hoạt động tương tự. Nó kiểm tra một điều kiện. Nếu điều kiện đó là đúng (true), nó sẽ thực thi một khối lệnh. Nếu điều kiện là sai (false), nó sẽ bỏ qua khối lệnh đó. Điều kiện thường là một phép so sánh.

Cú pháp của lệnh `if` rất đơn giản. Bạn đặt điều kiện cần kiểm tra bên trong cặp dấu ngoặc đơn `()`. Khối lệnh sẽ được thực thi được đặt trong cặp dấu ngoặc nhọn `{}`. Hãy xem một ví dụ đơn giản. Chương trình sẽ kiểm tra xem một học sinh có đủ điểm để qua môn hay không.


public class IfStatementExample {
    public static void main(String[] args) {
        double studentScore = 7.5;
        double passingScore = 5.0;

        // Kiểm tra xem điểm của học sinh có lớn hơn hoặc bằng điểm qua môn không
        if (studentScore >= passingScore) {
            System.out.println("Chúc mừng! Bạn đã qua môn.");
        }
    }
}

Trong ví dụ này, vì `7.5 >= 5.0` là đúng, nên dòng chữ chúc mừng sẽ được in ra. Nếu `studentScore` là 4.0, chương trình sẽ không in ra gì cả.

2. Lệnh `if-else`: Khi có hai lựa chọn

Lệnh `if` rất hữu ích, nhưng sẽ ra sao nếu chúng ta muốn thực hiện một hành động khác khi điều kiện sai? Quay lại ví dụ thời tiết: "Nếu trời mưa, tôi sẽ mang ô. Nếu không, tôi sẽ đội mũ". Đây chính là lúc `else` phát huy tác dụng. Lệnh `if-else` cung cấp một khối lệnh thay thế. Khối lệnh này sẽ được thực thi khi điều kiện của `if` là sai.

Bạn chỉ cần thêm từ khóa `else` và một khối lệnh `{}` ngay sau khối `if`. Cấu trúc này đảm bảo rằng một trong hai khối lệnh sẽ luôn được thực thi. Nó giúp chương trình xử lý được cả hai trường hợp "đúng" và "sai".


public class IfElseExample {
    public static void main(String[] args) {
        int temperature = 30; // Nhiệt độ hiện tại là 30 độ C

        if (temperature > 28) {
            System.out.println("Trời nóng, hãy bật điều hòa.");
        } else {
            System.out.println("Thời tiết mát mẻ, hãy mở cửa sổ.");
        }
    }
}
Cấu trúc Điều khiển (if-else, switch-case) - 0

3. Lệnh `if-else if-else`: Khi có nhiều điều kiện

Cuộc sống đôi khi có nhiều hơn hai lựa chọn. Ví dụ: "Nếu điểm >= 9, xếp loại Giỏi. Nếu điểm >= 7, xếp loại Khá. Nếu điểm >= 5, xếp loại Trung bình. Còn lại, xếp loại Yếu". Để xử lý nhiều điều kiện như vậy, chúng ta dùng chuỗi `if-else if-else`. Chương trình sẽ kiểm tra các điều kiện lần lượt từ trên xuống dưới. Nó sẽ thực thi khối lệnh của điều kiện đúng đầu tiên mà nó gặp.

Ngay sau khi tìm thấy một điều kiện đúng, nó sẽ bỏ qua tất cả các khối `else if` và `else` còn lại. Khối `else` ở cuối cùng là tùy chọn. Nó sẽ được thực thi nếu không có điều kiện nào ở trên là đúng. Đây là cách rất hiệu quả để phân loại hoặc xử lý các trường hợp phức tạp.


public class GradeClassifier {
    public static void main(String[] args) {
        double score = 8.2;
        
        if (score >= 9.0) {
            System.out.println("Xếp loại: Giỏi");
        } else if (score >= 7.0) {
            System.out.println("Xếp loại: Khá");
        } else if (score >= 5.0) {
            System.out.println("Xếp loại: Trung bình");
        } else {
            System.out.println("Xếp loại: Yếu");
        }
    }
}

Trong ví dụ này, kết quả sẽ là "Xếp loại: Khá". Mặc dù `8.2 >= 5.0` cũng đúng, nhưng chương trình đã dừng lại ở điều kiện đúng đầu tiên là `8.2 >= 7.0`.

4. Lệnh `switch-case`: Lựa chọn thay thế cho `if-else if`

Khi bạn cần kiểm tra một biến với nhiều giá trị cụ thể, việc dùng chuỗi `if-else if` có thể trở nên dài dòng. Lệnh `switch-case` là một lựa chọn thay thế gọn gàng hơn. Nó so sánh giá trị của một biến với một danh sách các "case" (trường hợp). Nếu tìm thấy một case khớp, nó sẽ thực thi khối lệnh của case đó.

Mỗi khối `case` phải kết thúc bằng lệnh `break;`. Lệnh này dùng để thoát khỏi cấu trúc `switch`. Nếu bạn quên `break`, chương trình sẽ tiếp tục chạy xuống các `case` bên dưới. Trường hợp `default` là tùy chọn. Nó sẽ được thực thi nếu không có `case` nào khớp. `switch-case` thường dùng với các kiểu dữ liệu như `int`, `char` và `String`.


public class SwitchCaseExample {
    public static void main(String[] args) {
        int dayOfWeek = 4; // 1: Chủ nhật, 2: Thứ hai, ...
        String dayName;

        switch (dayOfWeek) {
            case 1:
                dayName = "Chủ nhật";
                break;
            case 2:
                dayName = "Thứ hai";
                break;
            case 3:
                dayName = "Thứ ba";
                break;
            case 4:
                dayName = "Thứ tư";
                break;
            case 5:
                dayName = "Thứ năm";
                break;
            case 6:
                dayName = "Thứ sáu";
                break;
            case 7:
                dayName = "Thứ bảy";
                break;
            default:
                dayName = "Ngày không hợp lệ";
                break;
        }
        System.out.println("Hôm nay là: " + dayName);
    }
}

5. Bài tập thực hành: Kiểm tra năm nhuận

Bây giờ là lúc bạn vận dụng kiến thức! Hãy thử viết một chương trình để kiểm tra xem một năm có phải là năm nhuận hay không. Gợi ý: một năm là năm nhuận nếu nó thỏa mãn một trong hai điều kiện sau: (1) Chia hết cho 4 nhưng không chia hết cho 100, hoặc (2) Chia hết cho 400. Bạn sẽ cần dùng các phép toán chia lấy dư (`%`) và logic (`&&`, `||`).


Kết luận

Bạn vừa học được một trong những kỹ năng cơ bản nhất của lập trình. Đó là khả năng làm cho chương trình đưa ra quyết định. Với `if-else` và `switch-case`, bạn có thể điều khiển luồng thực thi của code. Điều này giúp xử lý các tình huống đa dạng trong thực tế. Ở bài học tiếp theo, chúng ta sẽ khám phá về vòng lặp. Hãy sẵn sàng để giải phóng sức mạnh của sự tự động hóa nhé!

0 Bình luận