2014-03-27 74 views
0

我的問題是我有以下代碼:返回一個參數是Getters的對象?

public Card getCard(int index) { 
if (index <=0 || index > cardKeys.length) 
return null; 
else 
return new Card(getSuit(index),getRank(index)); 
} 

我已經填補了我不過JUnit測試說,有一個錯誤..我認爲,這意味着,如果該指數低於cardkeys小於或大於數組則返回null 否則返回與參數類型卡的對象getRankGetSuit

生病也發佈干將是否有幫助:

public int getSuit(int index) { 
    if(index < 0 || index >= getSize()) 
     return 0; 
    return (cardKeys[index]-1)/13 + 1; 
} 

public int getRank(int index) { 
    if(index < 0 || index >= getSize()) 
     return 0; 
    return (cardKeys[index]-1)%13 + 1; 
} 

另請注意:我不是loooking的答案,我的任務,我只需要找到不同的方式一些幫助接近它

感謝滿口傢伙 Renx

+2

援引:「我的Junit測試說有錯誤」。錯誤是? – Seelenvirtuose

+0

嘗試在調試模式下運行您的測試,並逐步通過您的代碼,以查看它出錯的地方。 – Thomas

+0

使用try catch來跟蹤錯誤/異常 – Divya

回答

0

應該

if (index < 0 || index >= cardKeys.length)

您錯誤地在這裏添加了等於index <= 0的條件。該指數可以0,它是有效的,該指數應該是較小的比cardKeys.length以及

+0

如果它是一個數組,'cardKeys.length'應該是越界的。但@Alex沒有說明使用了哪種類型的集合;) – SlightlyCuban

+0

哈哈:)更新了'cardKeys.length'邏輯,謝謝! – Keerthivasan

+0

感謝所有不幸的@scheintod我不允許使用除了他們給我的數組之外的任何東西,否則我會的! 我嘗試和調試錯誤和更新,我認爲這與獲得者有關但是我不完全確定但是哈哈 也感謝章魚生病嘗試現在 –

0

我想給你提供了一個不同的方法:

由於只有52(53)個不同的卡(如果你嘗試實施撲克)建立這樣一個枚舉:

enum Card { SA, S1, S2, ..., SK, HA, H1, ...) 

如果你想了解的顏色/值花哨使用其他枚舉:

enum CardColor { SPADE, HEART, ... } 
enum CardValue { ACE, TWO, ..., QUEEN, HEART } 

並把它放在卡:

enum Card { 
    SA(Spade, ACE), S2(Spade, TWO) ... 
    CardColor color, 
    CardValue value 
    public Card(CardColor color, CardValue value){ 
     this.color = color; 
     this.value = value; 
    } 
} 

從那裏,你可以很容易地使用EnumSet來管理他們或把它們放到列表等。