Menu
CoddyTech

Toán tử logic, phần 4

Thuộc phần Nền tảng cơ bản trong hành trình Java của Coddy. Bài học 26 trên 73.

Luật De Morgan là quy tắc giúp ta đơn giản hóa các biểu thức có NOT. Khi làm việc với biểu thức logic, đôi khi ta cần đơn giản hóa hoặc sắp xếp lại chúng.

Khi có not đứng trước hai điều kiện nối với nhau bằng and, bạn có thể tách thành hai phần riêng. and đổi thành or, và mỗi phần có một not riêng:

!(A && B) tương đương với (!A) || (!B)

Ví dụ:

// Kiểm tra xem một số có KHÔNG nằm trong khoảng từ 1 đến 10 không
int number = 15;
// Hai biểu thức (expression) này tương đương nhau:
boolean result1 = !(number >= 1 && number <= 10);
boolean result2 = !(number >= 1) || !(number <= 10);
System.out.println(result1);  // true
System.out.println(result2);  // true

Điều ngược lại cũng đúng: !(A || B) tương đương với (!A) && (!B)

Ví dụ:

// Kiểm tra xem một người KHÔNG (phải là học sinh hoặc đang có việc làm)
boolean isStudent = false;
boolean isEmployed = false;
// Hai biểu thức (expression) này tương đương nhau:
boolean result1 = !(isStudent || isEmployed);
boolean result2 = !(isStudent) && !(isEmployed);
System.out.println(result1);  // true
System.out.println(result2);  // true
challenge icon

Thử thách

Người mới

Bạn đang giúp một cửa hàng thú cưng tạo hệ thống xác định xem họ có thể bán thú cưng cho khách hàng hay không.

Khởi tạo các biến sau:

  • hasLicense với giá trị true
  • hasSpace với giá trị false
  • hasExperience với giá trị true

Viết các biểu thức logic sau để xác định xem:

  • canSellRegularPet: Khách hàng cần có giấy phép HOẶC kinh nghiệm, VÀ phải có không gian
  • canSellExoticPet: Khách hàng cần có CẢ giấy phép VÀ kinh nghiệm, VÀ phải có không gian
  • cannotSellAnyPet: Khách hàng KHÔNG có giấy phép VÀ KHÔNG có kinh nghiệm, HOẶC không có không gian
  • result: canSellRegularPet HOẶC canSellExoticPet HOẶC cannotSellAnyPet

Gợi ý: Viết điều kiện mà yêu cầu mô tả, không phải giá trị mà biến tình cờ đang giữ. «Phải có không gian» → hasSpace; «không có không gian» → !hasSpace. Chỉ dùng ! khi yêu cầu trái ngược với điều mà tên biến nêu, chẳng hạn «KHÔNG có giấy phép» → !hasLicense.

Tự làm thử

public class Main {
    public static void main(String[] args) {
        // Khởi tạo các biến
        

        // Tính các điều kiện
        boolean canSellRegularPet = 
        boolean canSellExoticPet = 
        boolean cannotSellAnyPet =
        boolean result =

        // Đừng xóa các dòng bên dưới
        System.out.println("Can sell regular pet: " + canSellRegularPet);
        System.out.println("Can sell exotic pet: " + canSellExoticPet);
        System.out.println("Cannot sell any pet: " + cannotSellAnyPet);
        System.out.println("Result: " + result);
    }
}
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Nền tảng cơ bản

Tự luyện tập: Trình biên dịch Java online