Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to assign a value to each enum object, such as month number on a Month enum?

Tags:

java

I am new to Java so I don't really know much can you help me as simply as possible. This is my code; I got an error about the month(int) so that means it cannot import the library.

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

ERROR:Description Resource Path Location Type The constructor Month(int) is undefined Month.java /tb00594_comp1027_formative2/src/tb00594_comp1027_formative2 line 4 Java Problem

WARNING:Description Resource Path Location Type Build path specifies execution environment JavaSE-1.7. There are no JREs installed in the workspace that are strictly compatible with this environment. tb00594_comp1027_formative2 Build path JRE System Library Problem

So if you can help me as quickly as possible I would be greatefull.

like image 215
Thomas Arif Başoğlu Avatar asked Sep 14 '25 09:09

Thomas Arif Başoğlu


2 Answers

Enum is basically declaration of final set of passible options (in your case months). But it is still Java Class ~ Object.

Your error literally says you are missing constructor for Java Class while you want to give every enumeration certain property. I guess you want to add month order in calendar. All you need to do is just declare property of class and enum constructor.

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

See similar code run at Ideone.com.

like image 162
Andrej Buday Avatar answered Sep 16 '25 23:09

Andrej Buday


You have to write constructor for enum. So you need to implement like this;

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

}

As you can see the constructor ;

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

which is giving the integer value of related month.And set to value field of enum which is keep the month's value.

like image 26
drowny Avatar answered Sep 17 '25 00:09

drowny