Header Ads

[Java] Tính số ngày của tháng



1. Yêu cầu: 

Viết chương trình Java:

a. Cho vào 1 năm dương lịch. Xét năm đó có phải là năm nhuận không.
b. Cho vào tháng và năm. Tính số ngày trong tháng.

2. Mã nguồn:

2.1. Lớp DateUtils

Lớp này sẽ viết 2 phương thức để giải quyết bài toán

public class DateUtils {
    public static boolean isLeapYear(int year) {
        if (year % 4 == 0) {
            if (year % 100 == 0) {
                if (year % 400 == 0) {
                    return true;
                } else {
                    return false;
                }
            } else {
                return true;
            }
        } else {
            return false;
        }
    }

    public static int getDaysInMonth(int month, int year) {
        int daysInMonth = 0;
        switch (month) {
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                daysInMonth = 31;
                break;
            case 4:
            case 6:
            case 9:
            case 11:
                daysInMonth = 30;
                break;
            case 2:
                if (isLeapYear(year)) {
                    daysInMonth = 29;
                } else {
                    daysInMonth = 28;
                }
                break;
            default:
                System.out.println("Invalid month.");
                break;
        }
        return daysInMonth;
    }
}

2.2. Viết lớp Test để test chương trình

public class DateUtilsTest {
    public static void main(String[] args) {
        // Test isLeapYear() method
        int year1 = 2000; //test case 1
        if (DateUtils.isLeapYear(year1)) {
            System.out.println(year1 + " is a leap year.");
        } else {
            System.out.println(year1 + " is not a leap year.");
        }

        int year2 = 1900; //test case 2
        if (DateUtils.isLeapYear(year2)) {
            System.out.println(year2 + " is a leap year.");
        } else {
            System.out.println(year2 + " is not a leap year.");
        }

        // Test getDaysInMonth() method
        int year = 2022; //test case 3
        int month1 = 2;
        int daysInMonth1 = DateUtils.getDaysInMonth(month1, year);
        System.out.println("There are " + daysInMonth1 + " days in month " + month1 + " of year " + year + ".");

        int month2 = 4; ////test case 4
        int daysInMonth2 = DateUtils.getDaysInMonth(month2, year);
        System.out.println("There are " + daysInMonth2 + " days in month " + month2 + " of year " + year + ".");

        int month3 = 13; ////test case 5
        int daysInMonth3 = DateUtils.getDaysInMonth(month3, year);
    }
}
Giải thích hàm main ở trên:

  • Trường hợp kiểm thử (test case) đầu tiên kiểm tra phương thức isLeapYear() với một năm nhuận (2000) và trường hợp thứ hai kiểm tra với một năm không phải là năm nhuận (1900).
  • Trường hợp kiểm thử thứ ba kiểm tra phương thức getDaysInMonth() với tháng 2 năm 2022 (năm không phải năm nhuận), và trường hợp thứ tư kiểm tra với tháng 4 năm 2022.
  • Trường hợp kiểm thử thứ năm kiểm tra phương thức getDaysInMonth() với một tháng không hợp lệ (tháng 13).


Không có nhận xét nào

Được tạo bởi Blogger.