用jave枚举类型写月份,输出天数,还要考虑年份
时间: 2024-09-13 09:14:23 浏览: 49
在 Java 中,你可以创建一个枚举类型(Enum)来表示月份,并附带天数信息。这里是一个简单的示例,包括闰年的处理:
```java
public enum Month {
JANUARY(1, 31), FEBRUARY(2, 28), MARCH(3, 31), APRIL(4, 30),
MAY(5, 31), JUNE(6, 30), JULY(7, 31), AUGUST(8, 31),
SEPTEMBER(9, 30), OCTOBER(10, 31), NOVEMBER(11, 30), DECEMBER(12, 31);
private int number;
private int days;
// 枚举构造函数
Month(int number, int daysInMonth) {
this.number = number;
if (isLeapYear()) { // 判断是否为闰年
this.days = daysInMonth;
} else {
this.days = isFebruary() ? 28 : daysInMonth; // 非二月则直接用天数,如果是二月则看是否为闰年
}
}
// 是否为闰年
private boolean isLeapYear() {
return ((this.number == FEBRUARY.number && ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)));
}
// 是否为二月
private boolean isFebruary() {
return this == FEBRUARY;
}
// 获取该月份的天数
public int getDaysInMonth() {
return days;
}
// 对应的年份(假设默认年份)
private int year = 2000; // 可以为方法添加参数来传入年份
// 如果需要获取指定年份的天数,可以在方法中加入年份作为参数
public int getDaysInMonthWithYear(int year) {
this.year = year;
return isLeapYear(year) ? days : (isFebruary() ? 28 : days);
}
@Override
public String toString() {
return "Month{" +
"number=" + number +
", days=" + days +
'}';
}
}
// 使用示例
public static void main(String[] args) {
Month january = Month.JANUARY;
System.out.println("January in " + Month.YEAR + ": " + january.getDaysInMonthWithYear(2023));
}
```
在这个例子中,`Month`枚举包含了12个月份及其对应的天数,同时通过`isLeapYear()`方法判断是否为闰年以确定二月的天数。注意,这个示例默认了年份`MONTH.YEAR`,如果你需要动态计算其他年份的天数,可以修改`getDaysInMonthWithYear(int year)`方法。
阅读全文