用Java从键盘输入年份和月份, 输出该月份的日历表
时间: 2024-05-01 18:23:42 浏览: 103
根据年份与月份,输出该月的日历
以下是Java代码实现:
```java
import java.util.Scanner;
public class Calendar {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入年份:");
int year = sc.nextInt();
System.out.print("请输入月份:");
int month = sc.nextInt();
sc.close();
// 计算该月份的天数
int days = getDays(year, month);
// 计算该月份1号是星期几
int week = getWeek(year, month);
// 输出日历表
System.out.println(" 日 一 二 三 四 五 六");
for (int i = 0; i < week; i++) {
System.out.print(" ");
}
for (int i = 1; i <= days; i++) {
System.out.printf("%3d", i);
if ((i + week) % 7 == 0) {
System.out.println();
}
}
}
// 获取该月份的天数
private static int getDays(int year, int month) {
int[] monthDays = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if (month == 2 && isLeapYear(year)) {
return 29;
}
return monthDays[month - 1];
}
// 获取该月份1号是星期几
private static int getWeek(int year, int month) {
int[] weekDays = {7, 1, 2, 3, 4, 5, 6};
int days = 0;
for (int i = 1900; i < year; i++) {
if (isLeapYear(i)) {
days += 366;
} else {
days += 365;
}
}
for (int i = 1; i < month; i++) {
days += getDays(year, i);
}
return weekDays[days % 7];
}
// 判断是否为闰年
private static boolean isLeapYear(int year) {
return (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;
}
}
```
运行结果:
```
请输入年份:2022
请输入月份:10
日 一 二 三 四 五 六
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
```
阅读全文