-2

I have the below enum values.

    register1(1, 000),
    register2(2, 000),
    register3(3, 000),
    register4(4, 000);

I want to print out the values in the brackets rather than the name. They are both of type int. The second value is being updated by a switch statement which is all working correctly but I want to get the new values of the second values Without having to write out each one individually, hence the attempted loop through the enums!

When I try

    for (Registers register: Registers.values()) {
        System.out.println(register);
    }

It prints out "Register1, Register2 etc. etc."

 public enum Registers {

    register1(1, 000),
    register2(2, 000),
    register3(3, 000),
    register4(4, 000);

    public int registerNumber; 
    public int result;

    private Registers(int registerNumber, int result) {
        this.registerNumber = registerNumber; 
        this.result = result;
    }

    public int getRegisterNumber() {
        return registerNumber;
    }

    public int getResult() {
        return result;
    }

    public static Registers getByNumber(int number) {
        for (Registers register : values()) {
            if (register.registerNumber == number) {
                return register;
            }
        } return null;
    }       
}
Moser
  • 287
  • 2
  • 12

2 Answers2

2

Add getters to your enumeration which return the field variables that are storing your values.

public enum Register {
    register1(1, 0);

    private int field1;
    private int field2;

    private Register(int field1, int field2) {
        this.field1 = field1;
        this.field2 = field2;
    }

    public int getField1() {
        return field1;
    }

    public int getField2() {
        return field2;
    }
}
David Yee
  • 3,515
  • 25
  • 45
2

Just provide an accessor for it and call it in the println() instead of relying on toString():

for (Registers register: Registers.values()) {
        System.out.println(register.getResult());
    }
user207421
  • 305,947
  • 44
  • 307
  • 483