在这个扑克游戏代码中,我试图创建一个Card
类。但是,我想使用enum
类型,而不是使用constant
,因为我听说它更好。唯一的问题是我尝试了很多次,为suit
和faceValue
分配实例值,它们是int
变量到enum
类型变量,但它表示不兼容的类型。怎么了?如何将enum变量赋值给一个数值变量? Java
public class Card {
final static int MAX_SUITS = 4;
final static int MAX_FACE_VALUES = 13;
private int suit;
private int faceValue;
enum Suit {HEARTS, DIAMONDS, SPADES, CLUBS}
enum Face {ACE, JACK, QUEEN, KING}
public Card(int suit, int faceValue) {
this.suit = suit;
this.faceValue = faceValue;
}
public int getSuit() {
if (suit == 0) {
return suit = Suit.HEARTS; break;
else if (suit == 1)
return suit = Suit.DIAMONDS; break;
else if (suit == 2)
return suit = Suit.SPADES; break;
else if (suit == 3)
return suit = Suit.CLUBS; break;
}
public int getFaceValue() {
if (faceValue == 1)
return faceValue = Face.ACE; break;
else if (faceValue == 11)
return faceValue = Face.JACK; break;
else if (faceValue == 12)
return faceValue = Face.QUEEN; break;
else if (faceValue == 13)
return faceValue = Face.KING; break;
}
public void setFaceValue(int faceValue) {
this.faceValue = faceValue;
}
public void setSuit(int suit) {
this.suit = suit;
}
@Override
public String toString() {
if (suit > MAX_SUITS || faceValue > MAX_FACE_VALUES)
return "invalid entry";
else if((suit < 0 || faceValue < 0))
return "invalid entry";
else
return faceValue + " of " + suit;
}
}
你应该改变你的构造函数从公共卡(int suit,int faceValue){'到'公共卡(suit suit,face faceValue){'... – assylias 2015-02-05 16:21:54
@assylias我说过,将它分配给一个数值变量而不改变它的类型!我希望下一次你能够更好地阅读这个问题,而不是比赛回答和评估。 – askd 2015-02-05 16:31:40
@askd我看了你的问题。我的观点是:你应该尝试完全摆脱整体:使用枚举的整个想法是,你不需要再使用int常量。如果您继续使用整数,那么您并没有使用枚举的全部功能。您可能需要在整数和枚举之间进行转换的唯一场景是,如果您从外部源接收整数,例如数据文件。在这种情况下,在枚举和整数之间可以映射模式,例如通过向枚举中添加一个int构造函数。 – assylias 2015-02-05 17:20:21