Java打印万年历

本文介绍了一个用Java实现的万年历程序,该程序能够计算指定年份和月份的具体日期,包括判断是否为闰年、计算每月天数,并以表格形式展示当月的日历。通过用户输入年份和月份,程序能准确输出该月份每一天对应的星期。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

①计算1900年1月1日之前的总天数

②计算输入月份的天数(比如输入5,应计算1-4月的总天数)

③星期几计算:1+总天数%7 \t

④每行输入7个

完成万年历完整代码如下:

import java.util.Scanner;
public class Calendars{
    public static void main(String []argas)
    {
        Scanner input=new Scanner(System.in);
        int year;//年份
        int month;//月份
        int days=0;//天
        boolean isRn;//用于判断是否是闰年,true为闰年,false为平年
        int totalDays=0;
        System.out.println("******************使用万年历******************");
        System.out.println("请输入年份");
        year=input.nextInt();
        System.out.println("请输入月份");
        month=input.nextInt();
        //判断是否是闰年
        if((year%400==0)||(year%4==0&&year%100!=0))
        {
            isRn=true;
            System.out.println(year+"年是闰年");
        }
        else
        {
            isRn=false;
            System.out.println(year+"年是平年");
        }
        //计算年的总天数
        for(int i=1900;i<year;i++)
        {
            if((i%400==0)||(i%4==0&&i%100!=0))
            {
                totalDays+=366;
            }
            else
            {
                totalDays+=365;
            }
        }
        //计算输入月份之前的天数之和
        for(int i=1;i<=month;i++)
        {
            switch(i)
            {
                case 1:
                case 3:
                case 5:
                case 7:
                case 8:
                case 10:
                case 12:
                    days=31;
                    break;
                case 2:
                    if(isRn)
                    {
                        days=29;
                    }
                    else
                    {
                        days=28;
                    }    
                    break;
                case 4:
                case 6:
                case 9:
                case 11:
                    days=30;
                    break;
                default:
                    System.out.print("输入的月份有误");
                    break;
            }
            //输入月的天数保存到days中,但不累加
            if(i!=month)
            {
                totalDays+=days;
            }
        }

        //求出星期几,就是前面\t的个数
        int beforeDays;
        beforeDays=1+totalDays%7;
        if(beforeDays==7)
        {
            beforeDays=0;//代表星期天,0个\t
        }
        System.out.println("星期天\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六");
        //先打印\t
        for(int i=0;i<beforeDays;i++)
        {
            System.out.print("\t");
        }

        for(int i=1;i<=days;i++)
        {
            System.out.print(i+"\t");
            //满7个换行
            if((i+beforeDays)%7==0)
            {
                System.out.println();
            }
        }

        //System.out.print(year+"年"+month+"月共有"+days+"天");

    }
}

(来自博客园)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值