输入某年某月,输入这一年过去了多少天!输入某年月份输出当前月的日历表
代码有很多被注释了,小主们可以解封尝试尝试
package com.test;
import java.util.Scanner;
/**
* 作者:wildkid
* 时间:2021-6-9
* 输入一个日历得出这个月的日历信息
*/
public class demo4_f6 {
public static void main(String[] args) {
System.out.println();
System.out.println("友情提示:计算一年过去了几天,可随意输入日期:\n" +
" 若想输出某年某月的日历则日期必须输入 1 号 否则:日历不全,但正确!");
System.out.println();
int sumday = 0;//加一年中每个月的天数
int count = 0;//输入的年份已经过去了多少天
int twomonth = 0;//累计多少个闰年
Scanner input = new Scanner(System.in);
System.out.println("输入年份:");
int year = input.nextInt();
System.out.println("输入月份:");
int month = input.nextInt();
if (month < 0 || month > 12) {
System.out.println("月份输入不合法!运行结果不正确!结果选择性参考@@@");
}
System.out.println("输入日期:");
int day = input.nextInt();
if (day < 0 || day > 31) {
System.out.println("日期输入不合法!运行结果不正确!结果选择性参考@@@");
}
for (int i = 1; i < month; i++) {
if (i == 1 || i == 3 || i == 5 || i == 7 || i == 8 || i == 10 || i == 12) {
sumday += 31;
} else if (i == 4 || i == 6 || i == 9 || i == 11) {
sumday += 30;
} else if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {//判断闰年
sumday += 29;
} else {
sumday += 28;
}
}
System.out.println("*********************");
count = sumday + day;
System.out.println(year + "年已经过了" + count + "天!");
System.out.println("*********************");
//计算有到少个闰年
int flag = year - 1;
// System.out.println("\n\n" + year + "年前的闰年年份有:");
while (flag >= 1900) {
//标记1900年--因为1900年的1月1号为星期一
if ((flag % 4 == 0 && flag % 100 != 0) || (flag % 400 == 0)) { //判断闰年
twomonth++;//统计闰年年数
// System.out.print(flag + "\t"); //输入期间所有的闰年
}
flag--;
}
System.out.println("\n ***1900年到" + year + "年一共历经了: " + twomonth + " 个闰年!***");
int totalday = 0;//计算距离1900总共有多少天!
totalday = (year - 1900) * 365 + count + twomonth;
//总天数=365*((year-1)-1900)+ 闰年 + 今年天数
System.out.println("\n ***1900年到" + year + "年一共历经了: " + totalday + " 天!***");
int weekspace = totalday % 7;
System.out.println("\n\t\t\t\t\t\t " + year + "年" + month + "月");
System.out.println("Mon\t Tue\t Wed\t Thu\t Fri\t Sat\t Sun"); //输出日期表头
//写出每月的天数
int days = 0;//标记月份中的天数
if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) {
days = 31;
} else if (month == 4 || month == 6 || month == 9 || month == 11) {
days = 30;
} else if ((year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0)) {
days = 29;
} else {
days = 28;
}
//输入日期距离1900年每个星期余几天
for (int i = 1; i < weekspace; i++) {
System.out.print(" \t\t");
}
int nub = -1;
for (int i = day; i <= days; i++) {
System.out.print(i + "\t\t");
nub += 1;
if ((nub + weekspace) % 7 == 0) {
System.out.println();
}
}
System.out.println("\n\n");
}
}
效果图如下: