在這個撲克遊戲代碼中,我試圖創建一個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