2016-03-01 77 views
0

所以我有一個卡牌類,甲板類和一個遊戲類。除了我試圖將計算機生成的隨機卡片與玩家挑選的卡片進行比較之外,我擁有一切位置。爪哇:比較一張甲板上創建的兩張牌

這裏是我的卡String數組:

String[] suits = {"Spades", "Hearts", "Diamonds", "Clubs"}; 
String[] ranks = {"Ace", "2", "3", "4", "5", "6", "7", "8", "9", "10", 
          "Jack", "Queen", "King"}; 

這裏是我的compareTo方法,我已經從可比實現比較產生的卡給玩家選擇了卡,並返回更高之二:

public int compareTo(Card crd) 
{ 
    Card card1; 
    int card1Suit = (int) (Math.random() * 4); 
    int card1Rank = (int) (Math.random() * 13); 
    card1 = new Card(a,b); 
    if(card1.getRank().charAt(0) < crd.getRank().charAt(0)) 
    { 
     return 0; 
    } 

    return 1; 
} 

我明白,只是比較字符串數組元素的第一個字符是不正確的,但我不知道用什麼來得到正確的比較來回報更高的卡。有什麼建議麼?

回答

0

擺脫此方法中的Card card1;變量。它不僅不是必需的,而且是危險的,並且有可能拋出NullPointerException。請使用當前實例中調用此方法的字段,即this

要確定排名,您需要使用for循環遍歷數組,然後確定當前卡的字段與參數卡的字段相關的位置,然後返回相應的數字。

1

我寧願使用enum爲隊伍和西裝。您可以直接比較enum值與equals方法是否相等。您可以使用枚舉文字的枚舉順序爲行列提供自然排序,或者通過自定義構造函數爲枚舉值明確指定的排序值