美文网首页
万年历(实现从键盘输入1900年之后的任意的某年、某月,输出该月

万年历(实现从键盘输入1900年之后的任意的某年、某月,输出该月

作者: 优秀产品研习社 | 来源:发表于2018-09-14 17:48 被阅读0次

    //25. 万年历(实现从键盘输入1900年之后的任意的某年、某月,输出该月的日历)

    import java.util.Scanner;

    public class Calendar{

    public static void main(String[] args){

    //显示日历

    // 1、对应月份的天数

    // ① 1、3、5、7、8、10、12月份  31天

    // ② 4、6、9、11   30天

    // ③ 2   28天或29天(待定)

    // 2、对应月份1号 是星期几

    // ① 1900年 1月 1日 星期1 

    // ② 指定日期的星期  与1900年1月1日相差的天数%7+1 (1~7的范围)

    // ③ 相差天数=1900年与年份之间相差的天数 + 年份到指定月份1号之前相差的天数

    // 3、指定年份是平年还是闰年(确定二月 的天数)

    // ① 确定指定年份的2月有多少天

    //接收用户从控制台输入的数据

    Scanner sc = new  Scanner(System.in);

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

    int year = sc.nextInt();//获取年份

    System.out.println("请输入月份[1-12]:");

    int month = sc.nextInt();//获取月份

    //1、对应月份的天数

    int days = 28;

    if(month==1||month==3||month==5||month==7||month==8||month==10||month==12){

    days = 31;

    }else if(month==4||month==6||month==9||month==11){

    days = 30;

    }else{

    if(year%400==0||(year%4==0&&year%100!=0)){//判断闰年的情况

    days = 29;

    }

    }

    //2、相差天数

    int yDays = 0;//统计两个年份之间相差的天数

    for(int y = 1900;y<year;y++){

    if(year%400==0||(year%4==0&&year%100!=0)){//判断闰年的情况

    yDays += 366;

    }else{

    yDays += 365;

    }

    }

    int mDays = 0;//指定年份1月1日,到指定月份1日相差的天数

    for(int m = 1;m<month;m++){

    if(m==1||m==3||m==5||m==7||m==8||m==10||m==12){

    mDays += 31;

    }else if(m==4||m==6||m==9||m==11){

    mDays += 30;

    }else{

    if(year%400==0||(year%4==0&&year%100!=0)){//判断闰年的情况

    mDays += 29;

    }else{

    mDays += 28;

    }

    }

    }

    int totalDays = yDays + mDays+1;//相差总天数

    int week = totalDays%7+1;//指定月份1号 的星期

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

    //先根据星期 确定需要打印空位的 情况(week)

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

    if(i%7==0){

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

    }else{

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

    }

    }

    //可以打印对应月份的天数(days)

    for(int j = 1;j<=days;j++){

    if((j+week)%7==0){

    System.out.println(j+"\t");

    }else{

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

    }

    }

    }

    }

    相关文章

      网友评论

          本文标题:万年历(实现从键盘输入1900年之后的任意的某年、某月,输出该月

          本文链接:https://www.haomeiwen.com/subject/qpxagftx.html