Các lượt nộp
    Danh sách bài
    Trang chủ
    Báo lỗi
    solution
    Đăng nhập
    Đăng nhập

    Đề bài: Lớp MyDate với compareTo và daysBetween

    📖Cần ôn lý thuyết? Đọc bài giảng Buổi 5: Lập trình hướng đối tượng (1): lớp và đối tượng — khóa Lập trình Java

    Xây dựng lớp MyDate để biểu diễn ngày tháng năm trong khoảng năm 1900 đến 2100.

    1. Lớp MyDate(int day, int month, int year). Có thể giả sử input luôn hợp lệ.
    2. Phương thức int compareTo(MyDate o) trả về -1, 0, hoặc 1 theo thứ tự thời gian.
    3. Phương thức int daysBetween(MyDate o) trả về số ngày tuyệt đối giữa 2 ngày.
    4. String toString() trả về dd/mm/yyyy (có pad số 0, ví dụ 05/03/2024).
    5. Lưu ý năm nhuận: năm chia hết cho 4 nhưng không chia hết cho 100, hoặc chia hết cho 400.

    Trong main:

    • Đọc Q (số truy vấn).
    • Mỗi truy vấn 2 ngày trên cùng dòng: d1 m1 y1 d2 m2 y2 <op> với op ∈ {CMP, DIFF, FMT1, FMT2}.
    • CMP: in LESS, EQUAL, GREATER so sánh ngày 1 với ngày 2.
    • DIFF: in số ngày tuyệt đối giữa 2 ngày.
    • FMT1: in ngày 1 ở dạng dd/mm/yyyy.
    • FMT2: in ngày 2 ở dạng dd/mm/yyyy.
    • Định dạng đầu vào:
      • Dòng 1: Q (1 ≤ Q ≤ 100)
      • Q dòng: d1 m1 y1 d2 m2 y2 <op>
    • Ràng buộc đầu vào:
      • 1900 ≤ year ≤ 2100; ngày tháng hợp lệ.
    • Định dạng đầu ra:

      Mỗi truy vấn 1 dòng theo quy tắc trên.

    Ví dụ:

    Đầu vào:

    3
    1 1 2024 1 1 2024 CMP
    1 1 2024 31 12 2024 DIFF
    5 3 2024 1 1 2025 FMT1
    

    Đầu ra:

    EQUAL
    365
    05/03/2024
    

    Giải thích:

    Cùng ngày → EQUAL. 1/1/2024 → 31/12/2024 chênh 365 ngày (2024 nhuận có 366 ngày nhưng chỉ tính tới 31/12 nên là 365). FMT1 in ngày 1: 05/03/2024.

    Đầu vào:

    2
    29 2 2024 1 3 2024 DIFF
    1 1 2000 1 1 2001 DIFF
    

    Đầu ra:

    1
    366
    

    Giải thích:

    29/2/2024 và 1/3/2024 chênh 1 ngày. 1/1/2000 → 1/1/2001: năm 2000 nhuận nên 366 ngày.

    Đầu vào:

    4
    15 8 2023 15 8 2024 CMP
    1 1 1900 1 1 2100 DIFF
    7 7 2007 7 7 2007 FMT1
    10 10 2010 11 11 2011 CMP
    

    Đầu ra:

    LESS
    73049
    07/07/2007
    LESS
    

    Đầu vào:

    1
    31 12 2099 1 1 2100 DIFF
    

    Đầu ra:

    1
    

    Chủ đề

    🧩 Lập trình hướng đối tượng☕ JavaJavaJava: OOPTất cả môn học

    Đang tải editor...