万年历程序设计: 程序主要实现3个功能,功能选择用菜单如下实现: 1显示某一年的日历 2显示某年某一月的日历 3显示某一天是星期几 0退出 具体要求: 用户通过输入不同的数字进入不同的菜单。 每一月以日历表格的形式显示,表格的第一行显示星期,表格的内容是每一天。 用户可以很容易看到每一天是星期几。 利用输入输出函数和循环控制语句,实现一个简单的人机交互界面。 利用逻辑表达式,使用控制语句,判断闰年,某年某月某日是星期几。 实现对显示结果进行控制。 根据以上写出Java代码
时间: 2024-03-21 07:40:10 浏览: 26
以下是一个简单的Java代码实现:
```
import java.util.Scanner;
public class CalendarProgram {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int choice;
do {
System.out.println("请选择功能:");
System.out.println("1. 显示某一年的日历");
System.out.println("2. 显示某年某一月的日历");
System.out.println("3. 显示某一天是星期几");
System.out.println("0. 退出");
choice = scanner.nextInt();
switch (choice) {
case 1:
System.out.println("请输入年份:");
int year = scanner.nextInt();
showCalendar(year);
break;
case 2:
System.out.println("请输入年份:");
year = scanner.nextInt();
System.out.println("请输入月份:");
int month = scanner.nextInt();
showCalendar(year, month);
break;
case 3:
System.out.println("请输入年份:");
year = scanner.nextInt();
System.out.println("请输入月份:");
month = scanner.nextInt();
System.out.println("请输入日期:");
int day = scanner.nextInt();
System.out.println(getWeekday(year, month, day));
break;
case 0:
System.out.println("程序已退出。");
break;
default:
System.out.println("输入错误,请重新选择。");
break;
}
} while (choice != 0);
scanner.close();
}
// 判断是否为闰年
public static boolean isLeapYear(int year) {
return (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;
}
// 获取某年某月的天数
public static int getDaysInMonth(int year, int month) {
if (month == 2) {
return isLeapYear(year) ? 29 : 28;
} else if (month == 4 || month == 6 || month == 9 || month == 11) {
return 30;
} else {
return 31;
}
}
// 获取某年某月某日是星期几
public static String getWeekday(int year, int month, int day) {
int days = 0;
for (int i = 1; i < month; i++) {
days += getDaysInMonth(year, i);
}
days += day - 1;
int weekday = (days + 1 + 365 * (year - 1) + (year - 1) / 4 - (year - 1) / 100 + (year - 1) / 400) % 7;
String[] weekdays = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
return weekdays[weekday];
}
// 显示某一年的日历
public static void showCalendar(int year) {
System.out.println(year + "年");
for (int month = 1; month <= 12; month++) {
showCalendar(year, month);
}
}
// 显示某年某一月的日历
public static void showCalendar(int year, int month) {
System.out.println(year + "年" + month + "月");
System.out.println("日\t一\t二\t三\t四\t五\t六");
int daysInMonth = getDaysInMonth(year, month);
int firstDayOfMonth = (getWeekday(year, month, 1).equals("星期日")) ? 0 : (7 - getWeekday(year, month, 1).length() + 1);
int lastDayOfMonth = firstDayOfMonth + daysInMonth - 1;
for (int day = 1; day <= lastDayOfMonth; day++) {
if (day == 1) {
for (int i = 0; i < firstDayOfMonth; i++) {
System.out.print("\t");
}
}
System.out.print(day - firstDayOfMonth + 1);
System.out.print("\t");
if (day % 7 == firstDayOfMonth % 7) {
System.out.println();
}
}
System.out.println();
}
}
```