java接收一个年份数(大于等于1900)和一个月份数,打印出该月的日历。
时间: 2024-09-17 18:02:35 浏览: 37
在Java中,你可以使用`java.time`包下的`MonthDay`和`YearMonth`类来生成并打印任意月份的日历。下面是一个简单的示例,它会接收用户输入的年份和月份,然后显示对应的日历:
```java
import java.time.Month;
import java.time.YearMonth;
public class CalendarGenerator {
public static void main(String[] args) {
// 接收用户输入的年份和月份
int year = Integer.parseInt(args[0]);
int month = Integer.parseInt(args[1]);
// 检查输入是否有效(年份大于等于1900)
if (year < 1900 || year > 9999) {
System.out.println("无效的年份。请输入1900到9999之间的年份.");
return;
}
// 创建MonthDay对象,并获取对应月份的日历
MonthDay date = MonthDay.of(month, 1); // 我们假设每个月的第一天就是开始日期
YearMonth yearMonth = YearMonth.of(year, month);
var calendar = yearMonth.atDay(date);
// 打印日历
for (int i = 1; i <= calendar.lengthOfMonth(); i++) {
System.out.printf("%2d ", i); // 使用两个空格对齐数字
}
System.out.println();
// 如果是闰年的二月,需要额外处理29号
if (calendar.getMonth() == Month.FEBRUARY && isLeapYear(year)) {
System.out.printf("%2d ", 29);
}
System.out.println();
}
// 判断给定年份是否为闰年
private static boolean isLeapYear(int year) {
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
}
```
运行此程序时,传入年份和月份作为命令行参数,例如:
```
java CalendarGenerator 2023 12
```
这将打印2023年12月的日历。
阅读全文