Java之万年历

最近学习Java循环,做了个题目练习一下,记录如下:

import java.util.Scanner;

public class MyCalendar {
    public static void main(String[] args) {
        //已知1900.1.1  是星期1
        //输入年、月(2019,10) ->系统自带打印当月月历

        //算年与年之间的天数有多少
        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((i%4==0 && i%100 !=0)||i%400==0){
                days += 366;
            }else{
                days += 365;
            }
        }

        //算一年之内的天数有多少
        for(int i=1; i < month; i++){
            if( i == 1 || i == 3|| i == 5|| i == 7||i == 8|| i == 10||i == 12){
                days += 31;

            }else if(i == 4 || i == 6|| i == 9|| i == 11 ){
                days += 30;

            }else{
                if((year%4==0 && year%100 !=0)||year%400==0){
                    days += 29;
                }else{
                    days += 28;
                }
            }
        }
//        for(int i=1;i<month;i++){
//            switch(i) { //if()
//                case 1:
//                case 3:
//                case 5:
//                case 7:
//                case 8:
//                case 10:
//                case 12:
//                    days += 31 ;
//                    break ;
//                case 4:
//                case 6:
//                case 9:
//                case 11:
//                    days += 30 ;
//                    break ;
//                default:
//                    if((year%4==0 && year%100 !=0)||year%400==0 ){
//                        days += 29 ;
//                    }else{
//                        days += 28 ;
//                    }
//            }
//        }
//        System.out.println(days);
//        int xingQi = days% 7 ;
//        System.out.println("2020.2.29是星期"+xingQi);
        days++ ;//2019.10.1
//      星期 n = 天数% 7 ;
//        System.out.println(days);
        int xingQi = days % 7 ;
//        System.out.println("2020.3.1是星期"+xingQi);

        //定义一个月有几天
        int daysOfMonth = -1;
        if( month ==1 ||month ==3 ||month ==5 ||month ==7 ||month ==8||month ==10 ||month ==12 ){
            daysOfMonth = 31;
        }else if( month ==4 ||month ==6 ||month ==9 ||month ==11 ){
            daysOfMonth = 30;
        }else{
            if( (year%4==0 && year%100 !=0)||year%400==0 ){
                daysOfMonth = 29;
            }else{
                daysOfMonth = 28;
            }
        }

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

        //打印占位符
        //根据观察可得: 星期几 前面有几个空格(占位符)
        //空格(占位) ,占位符的个数 就是 星期n
        for(int i=0;i< xingQi;i++){
            System.out.print("\t\t");

        }

        //打印日期
        for(int i=1;i<=daysOfMonth ;i++){
            System.out.print(i+"\t\t");
            if((xingQi+i)%7==0){
                System.out.println();//回车
            }
        }
    }
}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值