练习题目要求:
- 获得输入年距1900年1月1日的总天数。
- 获得输入月份第一天是星期几。
- 格式化输出月份日期格式。
package Day09;
import java.util.Scanner;
public class WanNianLi {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
System.out.println("请输入年份:");
int year = in.nextInt();
System.out.println("请输入一个月份:");
int month = in.nextInt();
int sumDays = 0;//总天数
//根据输入的年计算年距1900年1月1日的天数
for (int i = 1900; i <year ; i++) {
//判断年份是闰年还是平年
if ((i%4==0&&i%100!=0)||i%400==0){
sumDays=sumDays+366;//闰年
}else {
sumDays=sumDays+365;//平年
}
}
System.out.println(year+"距离1900年1月1日的天数"+sumDays);
//计算输入的月份距离1900年1月1日的总天数
for (int i = 1; i <month; i++) {
int monthDays = 0;
switch (i){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
monthDays=31;
break;
case 4:
case 6:
case 9:
case 11:
monthDays=30;
break;
case 2:
if (year%4==0&&year%100!=0||year%400==0){
monthDays=29;
}else {
monthDays=28;
}
break;
}
sumDays=sumDays+monthDays;
}
//获得输入的年月的第一天是周几1日
//由于1900年1月1日是周一,一周七天,可以计算出输入的月份的第一天是周几
int week= sumDays%7+1;
//获取当前月的总天数
int days = 0;
switch (month){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
days = 31;
break;
case 4:
case 6:
case 9:
case 11:
days = 30;
break;
case 2:
if (year%4==0&&year%100!=0||year%400==0){
days=29;
}else {
days=28;
}
break;
}
System.out.println("日历如下");
//根据当前月的总天数及第一天是周几打印日历
System.out.println("一\t二\t三\t四\t五\t六\t日\t");
//根据一天是周几,确定一号的输出位置
for (int i = 1; i <week; i++) {
System.out.print(" \t");
}
for (int day = 1; day <=days ; day++) {
System.out.print(day+"\t");
//判断是否需要换行输出
if (week==7){
week=1;
System.out.println();
}else {
week++;
}
}
}
}