学Java第二天直接上万年历!差点给cpu干烧了,还好多学了一个小时,成功敲进10分钟!
package com.jr.www.demo1;
import java.util.Scanner;
public class Wannianli {
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 days = panDuanMonth(month, year);
//求输入的年份距离1900年的整年天数差
int yearNum = 0;
for (int i = 1900; i < year; i++) {
yearNum += panDuanPingRun(i) ? 366 : 365;
}
//求输入年份整月的天数差
int monthNum = 0;
for (int i = 1; i < month; i++) {
monthNum += panDuanMonth(i, year);
}
//求输入年份,输入月份的一号是星期几
int week = (yearNum + monthNum + 1) % 7;
System.out.println(year + "年" + month + "月一号是星期" + week);
//打印万年历表头
System.out.println(year + "年" + month + "月\t\t\t\t^v");
System.out.println("一\t二\t三\t四\t五\t六\t日\t");
//先打印空格:将1号挤到对应的星期下面
for (int i = 1; i <= week - 1; i++) {
System.out.print("\t");
}
//打印万年历表
for (int i = 1; i <= days; i++) {
System.out.print(i + "\t");
if ((yearNum + monthNum + i) % 7 == 0) {
System.out.println();
}
}
}
/*计算是平年还是闰年*/
public static boolean panDuanPingRun(int year) {
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
return true;
} else {
return false;
}
}
/*计算是大月,小月还是二月*/
public static int panDuanMonth(int month, int year) {
if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) {
return 31;
} else if (month == 4 || month == 6 || month == 9 || month == 11) {
return 30;
} else if (month == 2) {
return panDuanPingRun(year) ? 29 : 28;
} else {
return -1;
}
}
}
学Java的第二天,直接上万年历!
学Java第二天实现万年历
于 2025-07-24 22:27:33 首次发布
174

被折叠的 条评论
为什么被折叠?



