Java 使用枚举的数组越界异常

Java 使用枚举的数组越界异常,java,Java,我不断地得到一系列的性感觉,我不知道为什么。这越来越令人沮丧 以下是我的静态阵列: 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 St

我不断地得到一系列的性感觉,我不知道为什么。这越来越令人沮丧

以下是我的静态阵列:

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()];
}
我的卡对象有一个等级和一套,两者都是枚举


有什么线索可以解释为什么会发生这种情况吗?

请提供您的卡和等级/套装编号。看起来您的RANK_CODES或SUIT_CODES数组包含的值比相应的枚举少。例如,您的套装代码数组包含4个值,但套装枚举中有5或6个值。因此,一套衣服的序号可能返回为6,这不是一个包含4个值的数组的有效索引


小丑没有真正的套装或等级,所以如果可能的话,我可能会改变卡片对象,并为isJoker添加一个布尔字段。然后更改getCode()中的逻辑,检查isJoker是否为true,并返回适当的值,可能只是“j”或“joker”。我看不到你发布的代码中这些值最终是如何拾取图像的,因此我们需要看到更多的代码来回答这一部分。

我只能猜测,
pCard.getSuit()]
不是类型
SUIT\u code
而是类型
RANK\u code
或是其他枚举。调试代码时,请仔细检查
Card
是否有合适的枚举作为匹配项

,返回的是
pCard.getRank().ordinal()
pCard.getSuit().ordinal()
内部
getCode
?它将输出代码,直到BoundsCeptiones的ArrayoutOfBoundsCeptiones,无论您的枚举的条目多于字符串数组,还是存在某种有问题的初始化顺序(例如,在初始化前使用秩_代码),打印出两个值:pCard.getRank().ordinal()和pCard.getSuit().ordinal()。这几乎肯定会告诉你问题所在。我将我的图像保存为代码,是等级和西装的字母组合,因此,例如,如果我有一张黑桃8的图像,我将其命名为8s