【问题标题】:How do I assign an integer to an enum field?如何将整数分配给枚举字段?
【发布时间】:2023-03-19 14:40:01
【问题描述】:

一个类(Card)有一个枚举字段。我将枚举类型定义封装为类中的私有:

private enum Suit {
    HEARTS, DIAMONDS, SPADES, CLUBS;
}

在构造函数中,我想为一张牌分配一个随机花色。当然,我可以在下一个离散的统一变量上创建一个 switch-case 语句,并在四个不同的值上进行分支。有些东西告诉我,有一种更紧凑的方法可以做到这一点。在 C 中,枚举值只是一个整数,但是

public Card() {
    this.suit = this.random.nextInt(4);
}

(this.suit 的类型为 Suit)由于类型冲突而在 Java 中不起作用。

【问题讨论】:

    标签: java


    【解决方案1】:

    用途:

    Suit.values()[indexHere];
    

    values() 方法以数组形式提供枚举,其顺序与您在代码中编写它们的顺序相同。该方法由编译器自动添加。

    所以,在你的情况下:

    public Card()
    {
        this.suit = Suit.values()[this.random.nextInt(4)];
    }
    

    【讨论】:

      【解决方案2】:

      试试这个

      Suit.values()[(int) (Math.random() * 4);
      

      【讨论】:

        【解决方案3】:
        public Card() {
            this.suit = Suit.values()[new Random().nextInt(Suit.values().length)];
        }
        

        【讨论】:

        • 几乎和@Martijin 的回答一样。
        • 是的,我不够快
        猜你喜欢
        • 2014-09-20
        • 2023-03-18
        • 2016-04-13
        • 1970-01-01
        • 2020-08-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多