根据 Scanner类输入的年月份,简单的for,if语句,打印出当月的万年历。

 

 

 

 

 

1.根据1900年1月1日 星期一 起始点 计算1900-1-1至当月的所以天数

2.计算时间

整年的时间(判断闰年时间)

 

 

 

整月的时间(判断闰年二月,小月(30),大月(31))

 

 

 

3.所以时间=整年的时间+整月的时间+1(当天时间(当月的1号))

 

4.需要计算,当月的1号是星期几,所以时间%7,得到的数字就是星期几(0-6)

 

 

 

5.图片上的空格,

 

 

 

 

6.技术欠缺(重新,计算当天的天数)

 7.临界点 换行

 

 

代码

package com.xmx.lzy5_array;


import java.util.Scanner;

public class TwoDimensionalArrayDemo3 {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.println("请输入年份");
int year=input.nextInt();//输入年份
System.out.println("请输入月份");
int month=input.nextInt();//输入月份
// 所有的时间 整年的所有时间 整月的所有时间
int sumAllDay=0,sumAllYearDay=0,sumAllMonthDay=0;
//算整年的时间
/*
闰年 366
平年 365
*/
//根据 1900 11日 星期一 来计算时间
for (int i = 1900; i <year; i++) {
if(i%4==0&&i%100!=0||i%400==0){//计算闰年
sumAllYearDay+=366;
}else {
sumAllYearDay+=365;
}
}
//算整月的时间
/*
闰年二月 28
大月 1 3 5 7 8 10 12 每月31
小月 4 6 9 11 每月30
*/
for (int i = 1; i <month ; i++) {
if (i==2){
if(year%4==0&&year%100!=0||year%400==0){//计算闰年
sumAllMonthDay+=29;
}else {
sumAllMonthDay+=28;
}
} else if (i==4||i==6||i==9||i==11){//判断小月 4 6 9 11 每月30
sumAllMonthDay+=30;
}else {//只剩下 大月 31
sumAllMonthDay+=31;
}
}
sumAllDay=sumAllMonthDay+sumAllYearDay+1;// +1 加上当天的时间
//System.out.println(sumAllDay%7);//计算星期几
System.out.println("\t\t"+year+"\t"+month+"");//输出某年某月
System.out.println("\t\t\t\t\t\t");//框架柱

//打空格,调整格式 根据总的时间 来调控的
for (int i = 0; i < sumAllDay%7; i++) {
System.out.print("\t");
}

//计算当月的天数 month
int sumDay=0;
if (month==2){
if(year%4==0&&year%100!=0||year%400==0){ //根据输入的年份 判断是否是闰年
sumDay=29;
}else {
sumDay=28;
}
}else if(month==4||month==6||month==9||month==11){ //判断小月 4 6 9 11 每月30
sumDay=30;
}else { //只剩下 大月 31
sumDay=31;
}
for (int i = 1; i <= sumDay; i++) {
System.out.print(i+"\t");
if ((sumAllDay++)%7==6){ //判断临界点 换行
System.out.println();
}
}
}
}


posted on 2021-07-20 16:32    阅读(308)  评论(0编辑  收藏  举报

导航