#java#请问这个日历为什么只有1900到1903是对的其他都错了啊

class Calender{//1900年1月1日星期一

    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);

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

        int year = input.nextInt();

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

        int month = input.nextInt();

        int days =0;

        for (int i=1900;i<year; i++){//先计算年份共有多少天

            if (year%4==0&&year%100!=0||year%400==0){

                days+=366;

            }else{

                days+=365;

            }

        }

        for (int i=1;i<month;i++){//再计算月份有多少天

            if (i==2){

                if (year%4==0&&year%100!=0||year%400==0){//闰月29天

                    days+=29;

                }else{

                    days+=28;

                }

 

            }else if (i==1||i==3||i==5||i==7||i==8||i==10||i==12) {

                days+=31;

            }else{

                days+=30;

            }

        }

        int week = 1+days%7;//总天数除7再加1等于当月一号是星期几

        System.out.println("\t\t" + year + "年" + " " + month + "月");

        System.out.println("一\t二\t三\t四\t五\t六\t日\t");//打印行头

        for (int i =1;i<week; i++){//打印第一行可能的空格

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

        }

        int daymonth= 0;

        switch(month){//计算当月天数

            case 2:

                if (year%4==0&&year%100!=0||year%400==0){

                    daymonth=29;

                }else{

                    daymonth=28;

                }

                break;

            case 4:

            case 6:

            case 9:

            case 11:

                daymonth=30;

                break;

            default:

                daymonth=31;

                break;

        }

        for (int i=1;i<=daymonth;i++){

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

            if ((week-1+i)%7==0){//打印换行

                System.out.println();

            }

        }

    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值