Chương trình Java tìm số ngày của tháng trong một năm

1. Quy tắc số ngày của tháng trong một năm

Một năm có 12 tháng, mỗi tháng sẽ có số ngày khác nhau.

Số ngày trong tháng

Các tháng có 31 ngày là 1, 3, 5, 7, 8, 10, 12. Các tháng có 30 ngày là 4, 6, 9, 11. Tháng 2 có 28 ngày nếu thuộc năm không nhuận, có 29 nếu thuộc năm nhuận.

Vậy năm nhuận là năm như thế nào? Năm nhuận là năm chia hết cho 4 nhưng không chia hết 100 hoặc chia hết 400.

Chương trình tìm số ngày của tháng trong một năm được thực hiện như sau:

– Nhập tháng và năm từ bàn phím.

– Kiểm tra nếu tháng là 1, 3, 5, 7, 8, 10, 12 thì in ra màn hình tháng đó có 31 ngày. Nếu tháng là 4, 6, 9, 11 thì in ra màn hình tháng đó có 30 ngày.

– Kiểm tra nếu tháng là 2 thì kiểm tra năm nhuận. Nếu năm nhuận thì in ra màn hình tháng 2 có 29 ngày, ngược lại tháng 2 có 28 ngày.

– Nếu giá trị tháng không nằm trong khoảng từ 1 đến 12 thì in ra màn hình tháng không hợp lệ.

2. Sử dụng câu lệnh switch case trong Java

Sử dụng câu lệnh switch case để kiểm tra các tháng.

package numberdayinmonth;
import java.util.Scanner;

public class NumberDayInMonth {
    public static boolean checkYear(int nam) {
        return (nam % 4 == 0 && nam % 100 != 0) || nam % 400 == 0;
    }
    public static void main(String[] args) {
        int month, year;
        Scanner input = new Scanner(System.in);
        System.out.print("Input month: ");
        month = input.nextInt();
        System.out.print("Input year: ");
        year = input.nextInt();
        switch (month) {
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                System.out.print("Month " + month + "th has 31 days.");
                break;
            case 4:
            case 6:
            case 9:
            case 11:
                System.out.print("Month " + month + "th has 30 days.");
                break;
            case 2:
                if (checkYear(year)) {
                    System.out.print("Month " + month + "th has 29 days.");
                } else {
                    System.out.print("Month " + month + "th has 28 days.");
                }
                break;
            default:
                System.out.print("Invalid month.");
        }
    }
}

3. Sử dụng câu lệnh if…else trong Java

Sử dụng câu lệnh if else để kiểm tra các tháng.

package numberdayinmonth;
import java.util.Scanner;

public class NumberDayInMonth {
    public static boolean checkYear(int nam) {
        return (nam % 4 == 0 && nam % 100 != 0) || nam % 400 == 0;
    }
    public static void main(String[] args) {
        int month, year;
        Scanner input = new Scanner(System.in);
        System.out.print("Input month: ");
        month = input.nextInt();
        System.out.print("Input year: ");
        year = input.nextInt();
        if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) {
            System.out.print("Month " + month + "th has 31 days.");
        } else if (month == 4 || month == 6 || month == 9 || month == 11) {
            System.out.print("Month " + month + "th has 30 days.");
        } else if (month == 2) {
            if (checkYear(year)) {
                System.out.print("Month " + month + "th has 29 days.");
            } else {
                System.out.print("Month " + month + "th has 28 days.");
            }
        } else {
            System.out.print("Invalid month.");
        }
    }
}

4. Một cách ngắn gọn giúp tìm số ngày trong tháng

Những ví dụ trên sử dụng nhiều câu lệnh System.out.print() để in các ngày trong tháng. Chúng ta có thể tạo 1 biến lưu các trường hợp tháng có 31 ngày, 30 ngày, 29 ngày, 28 ngày như cách bên dưới. Việc này giúp chương trình chỉ cần sử dụng 1 câu lệnh System.out.print() để in số ngày trong tháng.

package numberdayinmonth;
import java.util.Scanner;

public class NumberDayInMonth {
    public static boolean checkYear(int nam) {
        return (nam % 4 == 0 && nam % 100 != 0) || nam % 400 == 0;
    }
    public static void main(String[] args) {
        int month, year;
        // cases of month in year
        int monthcase = 0;
        boolean validMonth = true;
        Scanner input = new Scanner(System.in);
        System.out.print("Input month: ");
        month = input.nextInt();
        System.out.print("Input year: ");
        year = input.nextInt();
        switch (month) {
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                monthcase = 3;
                break;
            case 4:
            case 6:
            case 9:
            case 11:
                monthcase = 2;
                break;
            case 2:
                if (checkYear(year)) {
                    monthcase = 1;
                } else {
                    monthcase = 0;
                }
                break;
            default:
                System.out.print("Invalid month.");
                validMonth = false;
                break;
        }
        if (validMonth) {
            System.out.print("Month " + month + "th has " + (28 + monthcase) + " days.");
        }
    }
}

Nếu tháng có 31 ngày thì monthcase = 3, tháng có 30 ngày thì monthcase = 2. Nếu năm nhuận và tháng 2 thì monthcase = 1, ngược lại monthcase = 0. Để in các ngày trong tháng ta chỉ cần lấy 28 cộng với monthcase.

5/5 - (1 bình chọn)
Chia sẻ trên mạng xã hội:

Tác giả Vinh Lê

Vinh Lê hiện đang là biên tập viên tại Góc Học IT.

Bài viết của Vinh Lê

Trả lời

Lưu ý:

1) Vui lòng bình luận bằng tiếng Việt có dấu.

2) Khuyến khích sử dụng tên thật và địa chỉ email chính xác.

3) Mọi bình luận trái quy định sẽ bị xóa bỏ.