如果用户输入的月份不是实际存在的,如何处理这种情况?
时间: 2024-09-12 15:17:33 浏览: 12
如果用户输入的月份不是实际存在的(比如大于12或小于1),在Java中,`Month.of()`函数会抛出`IllegalArgumentException`异常。为了避免这种异常,你应该先检查用户输入的月份是否合法,通常范围是从1(一月)到12(十二月)。以下是一个修改版的例子,包含了错误检查:
```java
import java.time.LocalDate;
import java.time.getMonthDay;
public class MonthDaysCounter {
public static void main(String[] args) {
int year = Integer.parseInt(args[0]);
int month = Integer.parseInt(args[1]);
if (month < 1 || month > 12) { // 检查月份是否在有效范围内
System.err.println("Invalid month value. Please enter a number between 1 and 12.");
return;
}
MonthDay md = getMonthDay(year, month);
int daysInMonth = md.lengthOfMonth(); // 获取月长
System.out.printf("Year %d, Month %d has %d days.\n", year, month, daysInMonth);
}
private static MonthDay getMonthDay(int year, int month) {
try {
return MonthDay.of(year, month);
} catch (IllegalArgumentException e) {
throw new IllegalArgumentException("Invalid month value.", e);
}
}
}
```
在这个例子中,如果输入的月份无效,我们会捕获异常并打印一条错误消息。