编写一个Java程序,接受用户输入的一个1-12之间的整数(如果输入的数据不满足这个条件,则要求用户重新输入),利用switch语句输出对应月份的天数。
时间: 2024-10-17 17:05:22 浏览: 27
为了编写这样一个Java程序,你可以按照以下步骤进行:
```java
import java.util.Scanner;
public class MonthDaysCalculator {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int monthInput;
do {
System.out.println("请输入一个1-12之间的月份:");
while (!scanner.hasNextInt()) { // 检查输入是否为整数
System.out.println("输入错误,请输入一个整数!");
scanner.next(); // 清除无效输入
}
monthInput = scanner.nextInt();
// 判断输入的月份数是否在1-12之间,如果不是则循环继续
} while (monthInput < 1 || monthInput > 12);
switch (monthInput) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12: // 这些月份有31天
System.out.println(monthInput + "月有31天");
break;
case 4:
case 6:
case 9:
case 11: // 这些月份有30天
System.out.println(monthInput + "月有30天");
break;
default: // 闰年2月有29天,平年2月有28天
int year = getYearFromUser(scanner); // 获取用户的年份
if (isLeapYear(year)) {
System.out.println(monthInput + "月有29天");
} else {
System.out.println(monthInput + "月有28天");
}
break;
}
scanner.close();
}
// 辅助函数检查年份是否为闰年
private static boolean isLeapYear(int year) {
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
// 提示用户输入年份
private static int getYearFromUser(Scanner scanner) {
System.out.println("请输入该年的完整年份:");
return scanner.nextInt();
}
}
阅读全文