使用枚举的数组超出范围异常

时间:2018-08-07 22:14:03

标签: java

我一直在获取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对象具有一个等级和一个西装,这两个都是枚举。

任何线索为什么会发生这种情况?

2 个答案:

答案 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是否具有适合的枚举