Java Month枚举

时间:2018-11-13 11:01:24

标签: java

大家好,我是Java新手,所以我不太了解您能不能尽可能简单地帮助我,所以这是我的代码,并且我遇到了有关month(int)的错误,这意味着它无法导入库

sessionAttribute
  

错误:描述资源路径位置类型   构造函数Month(int)是未定义的Month.java / tb00594_comp1027_formative2 / src / tb00594_comp1027_formative2第4行Java问题

     

警告:描述资源路径位置类型   构建路径指定执行环境JavaSE-1.7。在工作区中没有安装与该环境严格兼容的JRE。 tb00594_comp1027_formative2构建路径JRE系统库问题

所以,如果您能尽快帮助我,我会很高兴的。

4 个答案:

答案 0 :(得分:3)

Enum基本上是最后一组可通过期权的声明(在您的情况下为几个月)。但是它仍然是Java Class〜Object。

您的错误从字面上说是您想为每个枚举赋予某些属性时缺少Java类的构造函数。我想您想在日历中添加月份顺序。您只需要声明类和枚举构造函数的属性即可。

public enum Month {
    JANUARY(1), FEBRUARY(2), MARCH(3), APRIL(4),MAY(5),JUNE(6), JULY(7), AUGUST(8), SEPTEMBER(9), OCTOBER(10),  NOVEMBER(11), DECEMBER(12);

    private int monthOrder;

    public Month (int monthOrder) {
        this.monthOrder = monthOrder;
    }

    public int getMonthOrder() {
        return this.monthOrder;
    }
 }

答案 1 :(得分:2)

您必须为枚举编写构造函数。因此,您需要像这样实现;

public enum Month {
    January(1), February(2), March(3), April(4), May(5), June(6), July(7), August(8), September(9), October(10), November(11), December(12);

    private int value;

    Month(int i) {
        this.value = i;
    }

}

如您所见,构造函数;

Month(int i) {
    this.value = i;
} 

给出相关月份的整数值,并设置为枚举的value字段,该字段保留月份的值。

答案 2 :(得分:1)

添加构造函数:

public enum Month {
    JANUARY(1), FEBRUARY(2), MARCH(3), APRIL(4), MAY(5), JUNE(6), JULY(7), AUGUST(8), SEPTEMBER(9), OCTOBER(10),  NOVEMBER(11), DECEMBER(12);

    private final int number;

    public Month (int number) {
        this.number = number;
    }

    public int getNumber() {
        return number;
    }
}

答案 3 :(得分:0)

您在枚举中提供的值默认情况下为0、1 ...等等,与数组索引中的一样。如果要更改此值,则需要显式地获取值整数并将其添加到构造函数中。另外,要使用此值,您也可以使用吸气剂。

尝试一下:

public enum Month {

    January(1),
    February(2),
    March(3),
    April(4),
    May(5),
    June(6),
    July(7),
    August(8),
    September(9),
    October(10),
    November(11),
    December(12);

    private int value;

    Month(int value) {
        this.value = value;
    }

    public int getValue() {
        return value;
    }

}