美文网首页
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