java 如何为每个枚举对象分配一个值,例如Month枚举上的月号?

xtupzzrd  于 2023-05-21  发布在  Java
关注(0)|答案(4)|浏览(128)

我是Java新手,所以我真的不知道很多,你能帮助我尽可能简单。这是我的代码我得到了一个关于month(int)的错误,这意味着它无法导入库。

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)
}

错误:描述资源路径位置类型构造函数Month(int)is undefined Month.java line 4 Java Problem
警告:描述资源路径位置类型生成路径指定执行环境JavaSE-1.7。工作区中没有安装与此环境严格兼容的JRE。tb00594_comp1027_formative2构建路径JRE系统库问题
所以如果你能尽快帮助我,我会很高兴的。

biswetbf

biswetbf1#

Enum基本上是一组passible选项的声明(在您的情况下是几个月)。但它仍然是Java Class ~ Object。
你的错误字面上说你缺少Java类的构造函数,而你想给予每个枚举特定的属性。我猜你想在日历中添加月份顺序。所有你需要做的就是声明类的属性和枚举构造函数。

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

    // Member field.
    private int monthOrder;

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

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

参见类似code run at Ideone.com

x6yk4ghg

x6yk4ghg2#

你必须为枚举写构造函数。所以你需要这样实现;

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;
}

它给出了相关月份的整数值。并设置为枚举的值字段,保存月份的值。

w80xi6nr

w80xi6nr3#

添加构造函数:

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;
    }
}
tzdcorbm

tzdcorbm4#

您在枚举中提供的值默认为0、1、...例如数组索引。如果你想改变这一点,你需要显式地获取整数值,并将其添加到构造函数中。此外,为了使用这个值,你也可以有一个getter。
试试这个:

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;
    }

}

相关问题