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();
}
}
}
运行结果 额 怎么不会插图片
待会儿手机传
网友评论