如何为枚举字段分配整数?

时间:2013-12-29 17:16:11

标签: java

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

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

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

public Card() {
    this.suit = this.random.nextInt(4);
}
由于类型冲突,

(其中this.suit的类型为Suit)在Java中不起作用。

3 个答案:

答案 0 :(得分:4)

使用:

Suit.values()[indexHere];

values()方法以类似于在代码中编写的顺序给出数组中的枚举。编译器会自动添加此方法。

所以,在你的情况下:

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

答案 1 :(得分:0)

public Card() {
    this.suit = Suit.values()[new Random().nextInt(Suit.values().length)];
}

答案 2 :(得分:0)

试试这个

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