用java写一个控制台输入年月日,打印出本月日历
时间: 2023-06-04 22:03:57 浏览: 266
java编写的日历类程序,输入年份和月份,打印出该月的日历
5星 · 资源好评率100%
好的,以下是Java代码实现:
```java
import java.util.*;
public class PrintCalendar {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("请输入日期(格式:2022-01):");
String str = input.nextLine(); // 例如输入:2022-01
String[] arr = str.split("-");
int year = Integer.parseInt(arr[0]);
int month = Integer.parseInt(arr[1]);
input.close();
// 获取当月的天数和第一天是星期几
int days = getDaysOfMonth(year, month);
int firstDayOfWeek = getFirstDayOfWeek(year, month);
// 输出日历
System.out.println("日\t一\t二\t三\t四\t五\t六");
for (int i = 1; i <= days; i++) {
if (i == 1) {
for (int j = 0; j < firstDayOfWeek; j++) {
System.out.print("\t");
}
}
System.out.print(i + "\t");
if ((i + firstDayOfWeek) % 7 == 0) {
System.out.println();
}
}
}
// 获取当月的天数
public static int getDaysOfMonth(int year, int month) {
int days = 0;
if (month == 2) {
days = year % 4 == 0 && year % 100 != 0 || year % 400 == 0 ? 29 : 28;
} else if (month == 4 || month == 6 || month == 9 || month == 11) {
days = 30;
} else {
days = 31;
}
return days;
}
// 获取当月第一天是星期几(星期日为0,星期一为1,...,星期六为6)
public static int getFirstDayOfWeek(int year, int month) {
Calendar c = Calendar.getInstance();
c.set(year, month - 1, 1);
return c.get(Calendar.DAY_OF_WEEK) - 1; // 对应上面的0~6
}
}
```
使用示例:
```
请输入日期(格式:2022-01):2022-01
日 一 二 三 四 五 六
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
```
阅读全文