专注Java教育14年 全国咨询/投诉热线:400-8080-105
动力节点LOGO图
始于2009,口口相传的Java黄埔军校
首页 常见问题 Java培训机构:Java怎样实现万年历

Java培训机构:Java怎样实现万年历

更新时间:2024-04-21 14:47:43 来源:动力节点 浏览34次

要实现一个Java万年历,可以采用以下步骤:

 

获取用户输入的年份和月份,可以使用Scanner类或JOptionPane类实现。

 

判断该年份是否为闰年。如果该年份能够被4整除但不能被100整除,或者能够被400整除,那么该年就是闰年,否则为平年。可以通过Java的条件语句实现。

 

获取该月份的第一天是星期几,可以使用Java的Calendar类实现。通过设置Calendar对象的年份和月份,然后调用get方法获取星期几的值。

 

计算该月份的总天数,可以使用Java的switch语句根据月份来确定天数。

 

创建二维数组,用于存储日历表格。

 

填充日历表格。先将第一行填充完整,然后在循环中从第二行开始填充。如果当月天数小于等于表格中剩余的天数,则将该月所有日期填充完毕。否则,填充该月的所有日期后,剩余的表格空间设置为0。

 

输出日历表格,可以使用Java的System.out.println方法逐行输出。

 

下面是Java代码示例:

 

import java.util.Calendar;

import java.util.Scanner;

 

public class CalendarDemo {

 

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        System.out.print("请输入年份:");

        int year = sc.nextInt();

        System.out.print("请输入月份:");

        int month = sc.nextInt();

        sc.close();

 

        int days = getDaysOfMonth(year, month);

        int firstDayOfWeek = getFirstDayOfWeek(year, month);

 

        int[][] calendar = new int[6][7];

        int day = 1;

        for (int i = 0; i < calendar.length; i++) {

            for (int j = 0; j < calendar[i].length; j++) {

                if (i == 0 && j < firstDayOfWeek) {

                    calendar[i][j] = 0;

                } else if (day > days) {

                    calendar[i][j] = 0;

                } else {

                    calendar[i][j] = day;

                    day++;

                }

            }

        }

 

        System.out.println(year + "年" + month + "月的日历:");

        System.out.println("日\t一\t二\t三\t四\t五\t六");

        for (int i = 0; i < calendar.length; i++) {

            for (int j = 0; j < calendar[i].length; j++) {

                if (calendar[i][j] == 0) {

                    System.out.print("\t");

                } else {

                    System.out.print(calendar[i][j] + "\t");

                }

            }

            System.out.println();

        }

    }

 

    // 获取指定年月的总天数

    public static int getDaysOfMonth(int year, int month) {

        int days = 0;

        switch (month) {

        case 1:

        case 3:

        case 5:

        case 7:

        case 8:

        case 10:

        case 12:

            days = 31;

            break;

}

}

 

我们需要定义一个方法来输出当前月份的日历,代码如下:

public static void printCalendar(int year, int month) {

    int[][] calendar = getCalendar(year, month);

    System.out.println(" Sun Mon Tue Wed Thu Fri Sat");

    for (int i = 0; i < calendar.length; i++) {

        for (int j = 0; j < calendar[i].length; j++) {

            if (calendar[i][j] == 0) {

                System.out.print("    ");

            } else {

                System.out.printf("%4d", calendar[i][j]);

            }

        }

        System.out.println();

    }

}

 

这个方法首先调用 getCalendar() 方法获取当前月份的日历数组,然后按照日历格式输出到控制台上。

 

最后,我们可以编写一个 main() 方法来测试我们的日历程序:

 

public static void main(String[] args) {

    int year = 2023;

    int month = 3;

    printCalendar(year, month);

}

 

这个 main() 方法输出的是 2023 年 3 月的日历,运行程序后输出结果如下:

 

 Sun Mon Tue Wed Thu Fri Sat

                  1   2   3

  4   5   6   7   8   9  10

 11  12  13  14  15  16  17

 18  19  20  21  22  23  24

 25  26  27  28  29  30  31

 

 

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>