美文网首页
java编写一个万年历

java编写一个万年历

作者: 我是王串串的崔先生 | 来源:发表于2017-11-12 13:33 被阅读39次

    java编写万年历有个事情需要解决
    1900年1月1日是星期一 那么 怎么算出 某年某月某日星期几
    因为一个星期七天 那么 如果总天数模7等于几那就是星期几
    比如1月7号是7天,模数为0 我们就可以认定是星期天
    其他的 模数是几就是星期几
    那么总天数怎么算
    平年 365 天 2月28天
    闰年 366 天 2月 29天
    闰年比较少 闰年如何判断:
    如果一个年数可以被400整除 或者一个数可以被4整除缺不能被100整除 那么这个数就是闰年

    year%400==0 || (year%4 == 0&&year%100 !=0)  //闰年
    

    总天数分成俩部分来计算
    今年之前的总天数(yearDays)+ 今年今月之前的总天数(monthDays)

    yearDays 可以直接以365计算 ,monthDays则需要 计算多个月的总天数
    需要的东西基本结束 剩下的就是排版的问题 直接贴代码:

    package com.javaTest;
    
    import java.util.Scanner;
    
    public class CalenderTest {
        static final int N =1990;
        static int monthDays[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
        static boolean LeapYear(int year) {
            if(year%400 == 0||(year%4==0&&year%100!=0)) {
                return true;
            }
            return false;
        }
        
         
         static int  sumYearDays(int year) {
            int yearDays =0;
            for(int i=N;i<year;i++) {
                
                if(LeapYear(i)) {
                    yearDays+=366;
                }
                else {
                    yearDays+=365;
                    }
            }
            return yearDays;
        }
         static int  sumMonthDays(int month) {
                int Days =0;
                
                for(int i=1;i<month;i++) {
                    Days+=monthDays[i];
                    }
                return Days;
            }
        
        public static void main(String[] args) {
            
            while(true){
            int Month,Year,sumDays;
            Scanner in  = new Scanner(System.in);
            System.out.println("请输入年份在(1900-2900之间):");
            Year = in.nextInt();
            if(Year>2900|| Year< 1900) {
                System.out.println("输入年份不合法,请重新输入!");
                return;
                }
            System.out.println("请输入月份(1-12)");
            Month  = in.nextInt();
            if(Month>12 || Month<1) {
                System.out.println("输入月份不合法,请重新输入");
                return; 
            }
            sumDays=sumYearDays(Year)+sumMonthDays(Month);
                if(LeapYear(Year)) {
                  System.out.println("闰年");
                monthDays[2]=29;
                sumDays+=1;
                }
            //判断输入月份1号是星期几 1990 1 1 星期一
             int tempxingqi =(sumDays % 7) ;
             if(tempxingqi==0) {
                 tempxingqi=7;
             }
             System.out.println(tempxingqi+"   "+ sumDays);
             System.out.println("星期一    星期二 星期三 星期四 星期五 星期六 星期日");
            System.out.println();
             for(int i=1;i<tempxingqi;i++) {
                 System.out.print("   ");
             }
             for(int i=1;i<=monthDays[Month];i++) {
                
                 System.out.print(i+"     ");
                 if((tempxingqi+i)%7==1) {
                     System.out.println();
                 }}
             System.out.println();
             }
            }
    
    }
    
    

    运行结果 额 怎么不会插图片
    待会儿手机传

    java编写一个万年历

    相关文章

      网友评论

          本文标题:java编写一个万年历

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