接收一个年份数和一个月份数,打印出该月的日历。用java编写
时间: 2023-06-01 09:01:25 浏览: 133
以下是一个简单的Java程序,用于打印指定月份的日历:
```java
import java.util.*;
public class CalendarPrinter {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
// 接收年份和月份
System.out.print("请输入年份:");
int year = input.nextInt();
System.out.print("请输入月份:");
int month = input.nextInt();
// 获取指定月份的天数
int daysInMonth = getDaysInMonth(year, month);
// 获取指定月份的第一天是星期几
int firstDayOfWeek = getFirstDayOfWeek(year, month);
// 打印日历头部
System.out.println(" SUN MON TUE WED THU FRI SAT");
// 打印日历日期
int dayOfWeek = 0;
for (int day = 1; day <= daysInMonth; day++) {
if (day == 1) {
// 打印第一天之前的空格
for (int i = 0; i < firstDayOfWeek; i++) {
System.out.print(" ");
dayOfWeek++;
}
}
// 打印日期
System.out.printf("%4d", day);
// 换行
dayOfWeek++;
if (dayOfWeek == 7) {
System.out.println();
dayOfWeek = 0;
}
}
// 打印最后一行之后的空行
if (dayOfWeek != 0) {
System.out.println();
}
}
// 获取指定月份的天数
private static int getDaysInMonth(int year, int month) {
int daysInMonth = 31;
if (month == 4 || month == 6 || month == 9 || month == 11) {
daysInMonth = 30;
} else if (month == 2) {
if (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)) {
daysInMonth = 29;
} else {
daysInMonth = 28;
}
}
return daysInMonth;
}
// 获取指定月份的第一天是星期几
private static int getFirstDayOfWeek(int year, int month) {
Calendar calendar = Calendar.getInstance();
calendar.set(year, month - 1, 1);
return calendar.get(Calendar.DAY_OF_WEEK) - 1;
}
}
```
在这个程序中,我们首先使用Scanner类接收用户输入的年份和月份。然后,我们使用getDaysInMonth()方法获取指定月份的天数,并使用getFirstDayOfWeek()方法获取指定月份的第一天是星期几。
接下来,我们打印日历头部。在循环中,我们首先打印月份的第一天之前的空格,然后打印日期。如果当天是星期六,则换行。最后,我们打印最后一行之后的空行。
这是一个简单的程序,它可以打印指定月份的日历。当然,还有很多可以改进的地方,例如添加输入验证、优化日期格式等。
阅读全文