打印存储在枚举中的值

Printing values stored in an enum

我有以下枚举值。

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

我想打印出括号中的值而不是名称。它们都是int类型。第二个值由一个 switch 语句更新,该语句全部正常工作,但我想获得第二个值的新值 而不必单独写出每个值,因此尝试循环遍历枚举!

当我尝试时

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

它打印出 "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;
    }       
}

将 getter 添加到您的枚举中,return 存储您的值的字段变量。

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

只需为其提供访问器并在 println() 中调用它而不是依赖 toString():

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