用简单JAVA语言编写日历

  • Post author:
  • Post category:java




1、日历需求


键盘录入两个数据



年份和月份



输出当月的日历图



提示:1900年1月1日为星期一



2、日历程序编写思路


1.因为1900年1月1日为星期一,所以我们从1900 1.1开始算

从当天开始到输出的总天数;


2.因为到现在的天数可以大致分为从1900年开始到现在的年

数乘以天数加上到当月的天数;


3.求1900到输入年的总天数;


4.求1月到输入月的天数;


5.应该得到输入月第一天为星期几;


6.得到当月的天数;


7.打印日历的格式;


8.打印日期(日期中打出为对齐的);


9.打印空格(要的到当月第一天与周几对齐);



3、日历代码

import java.util.Scanner;
public class Text02 {
    public static void main(String[] args) {
        //键盘录入你想要查看的月份
        //1900年的1月为周一以此为起始
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入年份:");
        int year=sc.nextInt();
        System.out.println("请输入月份:");
        int mouth=sc.nextInt();
        //计算从1900年开始到year的天数
        int allDayofyear=0;
        for(int i=1900;i<year;i++){
            //判断是否为润年
            if(i%4==0 && i%100!=0 || i%400==0){
                allDayofyear+=366;//闰年
            }else {
                allDayofyear+=365;//平年
            }
        }
        //计算从1月到mouth月的天数
        int allDayofMouth=0;
        for(int i=1;i<=mouth;i++){
            switch (i){
                case 1: case 3: case 5: case 7: case 8: case 10: case 12:
                    allDayofMouth+=31;
                    break;
                case 4: case 6: case 9: case 11:
                    allDayofMouth+=30;
                    break;
                case 2:
                    if(i%4==0 && i%100!=0 || i%400==0){
                        allDayofMouth+=29;
                    }else {
                        allDayofMouth+=28;
                    }
            }
        }
        //计算总天数,年的天数加上月的天数
        int allDay=0;
        allDay=allDayofMouth+allDayofyear+1;//加1是因为计算截至前一天,后一天没有加上,所以加1
        System.out.println(allDay);
        //计算星期
        int week=0;
        week=mouth%7;
        System.out.println(week);
        //计算输入的月份有多少天
        int day=0;
        switch (mouth){
            case 1: case 3: case 5: case 7: case 8: case 10: case 12:
                day=31;
                break;
            case 4: case 6: case 9: case 11:
                day=30;
                break;
            case 2:
                if(mouth%4==0 && mouth%100!=0 || mouth%400==0){
                    day=29;
                }else {
                    day=28;
                }
        }
        //打印日历
        System.out.println("---"+year+"年-"+mouth+"月---");
        System.out.println("一\t二\t三\t四\t五\t六\t日");
        int n=0;
        //打印空格
        for(int i=0;i<week;i++){
            System.out.println("\t");
            n++;
        }
        //打印日期
        for(int i=1;i<=day;i++){
            System.out.print(i+"\t");
            n++;
        }
        System.out.println();

    }
}



版权声明:本文为qq_58172483原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。