用Java实现程序:已知1901年1月1日为星期二,输入年月,输出该月日历,然后输出月历标题,获取月英文全称,然后输出月体,
时间: 2024-12-08 09:20:47 浏览: 15
在Java中,我们可以使用`java.time`包下的`MonthDay`、`YearMonth`以及`Month`类来实现这个功能。以下是一个简单的示例程序,它会根据用户输入的年份和月份计算出该月的日历,并打印出相关信息:
```java
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Locale;
public class CalendarGenerator {
public static void main(String[] args) {
// 获取用户输入的年份和月份
System.out.println("请输入年份:");
int year = Integer.parseInt(ConsoleReader.readLine());
System.out.println("请输入月份(1-12):");
int month = Integer.parseInt(ConsoleReader.readLine());
// 创建LocalDate对象,假设1901年1月1日是星期二
LocalDate startDate = LocalDate.of(1901, 1, 1);
int daysInMonth = LocalDate.of(year, month, 1).lengthOfMonth();
// 计算当前日期
LocalDate currentDate = startDate.plusDays(daysInMonth - 1);
// 格式化日期并输出月历标题
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年M月", Locale.CHINA);
String calendarTitle = "日一二三四五六";
System.out.println("日历标题: " + calendarTitle);
System.out.println("月历: " + currentDate.getDayOfWeek().getDisplayName(TextStyle.FULL, Locale.CHINA));
// 输出月英文全称
Month monthObj = Month.of(month);
String fullMonthName = monthObj.getDisplayName(TextStyle.FULL, Locale.ENGLISH);
System.out.println("月英文全称: " + fullMonthName);
// 输出月体
for (int i = 1; i <= daysInMonth; i++) {
System.out.printf("%4d ", i);
}
System.out.println();
// 询问是否继续生成下个月的日历
if (ConsoleReader.promptUserForContinue()) {
// 这里可以添加递归调用,但请注意实际应用中需要处理边界条件
} else {
System.out.println("感谢使用!");
}
}
// 假设存在一个ConsoleReader类用于读取控制台输入和提示用户操作
private static class ConsoleReader {
// ... 提供readLine()和promptUserForContinue()等方法
}
}
```
这个程序首先创建了一个起始日期,然后通过加法计算出指定年份和月份的最后一天。接着,它按照中国的日期格式打印出日历标题和日期,以及英文全称。注意,为了简化,这里我们假定`ConsoleReader`类存在,它提供了一些用户交互的功能。
阅读全文