我一直在获取ArrayOutOfBoundsException,但我不知道为什么。越来越令人沮丧了。
这是我的静态数组:
private static final String[] RANK_CODES = {"a", "2", "3", "4", "5", "6", "7", "8", "9", "t", "j", "q", "k"};
private static final String[] SUIT_CODES = {"c", "d", "h", "s"};
现在,当我尝试访问它们时:
private static String getCode(Card pCard) {
return RANK_CODES[pCard.getRank().ordinal()] +
SUIT_CODES[pCard.getSuit().ordinal()];
}
我的Card对象具有一个等级和一个西装,这两个都是枚举。
任何线索为什么会发生这种情况?
答案 0 :(得分:1)
请附上您的Card和Rank / Suit枚举的代码。看起来您的RANK_CODES或SUIT_CODES数组包含的值少于相应的枚举。即,您的SUIT_CODES数组包含4个值,但您的SUIT枚举中包含5个或6个值。因此,SUIT的序数可能会返回为6,这不是具有4个值的数组的有效索引。
说笑话者实际上没有西装或等级,所以我可能会更改Card对象,并为isJoker添加一个布尔字段。然后更改getCode()中的逻辑以检查isJoker是否为true并返回适当的值,可能只是“ j”或“ joker”。我没有在您发布的代码中看到这些值最终如何拾取图像,因此我们需要查看更多代码来回答这一部分。
答案 1 :(得分:0)
我只能猜测pCard.getSuit()]
的类型不是SUIT_CODES
,而是RANK_CODES
或其他枚举。仔细检查Card
是否具有适合的枚举