一个类( Card )有一个枚举字段。我将枚举类型定义封装为类中的私有:
private enum Suit {
HEARTS, DIAMONDS, SPADES, CLUBS;
}
在构造函数中,我想为卡片分配随机套装。当然,我可以在下一个离散的均匀变量上创建一个switch-case语句,并在四个不同的值上进行分支。有些东西告诉我,有一个更紧凑的方法来做到这一点。在C中,枚举值只是一个整数,但
public Card() {
this.suit = this.random.nextInt(4);
}
由于类型冲突,(其中this.suit的类型为Suit)在Java中不起作用。
答案 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);