根据 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年 1月1日 星期一 来计算时间
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 每月