2015-05-17 55 views
0

我正在製作一個基本的卡片組,並且使用枚舉遇到了問題。枚舉類型可能未實例化錯誤

如何解決以下錯誤(枚舉類型可能不被實例化),在我的代碼,並獲得分配給每個枚舉值

public enum Rank { 

    ACE(14), 
    KING(13), 
    QUEEN(12), 
    JACK(11), 
    TEN(10), 
    NINE(9), 
    EIGHT(8), 
    SEVEN(7), 
    SIX(6), 
    FIVE(5), 
    FOUR(4), 
    THREE(3), 
    TWO(2); 
    private final int rankValue; 

    Rank(int rankValue) { 
     this.rankValue = rankValue; 
    } 

    public int getRankValue() { 
     return rankValue; 
    } 

} 
private Card[] cards = new Card[52]; 

public Deck() { 
    int posInDeck = 0; 
    for (Suit s : Suit.values()) { 
     for (Rank r : Rank.values()) { 
      cards[posInDeck] = new Card(s.toString(),new Rank(r.getRankValue(), r.toString()), false);// ERROR HERE 
      posInDeck++; 
     } 
    } 
} 
+0

「如何解決以下錯誤」是什麼錯誤?提供錯誤消息和**短但全**代碼將讓我們重現它。現在看起來這段代碼片段是'Deck'類的一部分,但我只能假設它只在縮進級別和構造函數的名稱上。 – Pshemo

+0

爲什麼不只定義'Rank'枚舉中的值並將'Rank.ACE'傳遞給'Card'的構造函數(並相應地編輯'Card'中的字段/ getter/setter?實例化枚舉不會使因爲枚舉是一組靜態值。 – Stefan

回答

3

你不能實例化一個enum像你這樣實例化一個class 。陳述new Rank(r.getRankValue(), r.toString())不正確。

這是你可以做什麼,而不是:

cards[posInDeck] = new Card(s.toString(),r,false); 
1

你可以只用r代替new Rank(r.getRankValue(), r.toString())