我正在尝试使用数组来处理Bridge手,然后按照套装进行排序。该程序处理所有13张卡,但后来我收到了错误,
"Exception in thread "main"
java.lang.ArrayIndexOutOfBoundsException: 13
at DeckStuff.main(DeckStuff.java:29)"
任何帮助都将不胜感激。
public static void main(String[] args) {
Card.shuffleDeck();
Card.dumpCards();
Card[] bridgeHand = new Card[13];
for (int i = 0; i < bridgeHand.length; i++) {
bridgeHand[i] = Card.dealCard();
}
for (int i = 0; i < bridgeHand.length; i++) {
System.out.print(bridgeHand[i]);
}
System.out.println();
Card.sortHand(bridgeHand);
String[] suit = {"Spades", "Hearts", "Diamonds", "Clubs"};
int j = 0;
for(int i = 0; i < 4; i++) {
String s = suit[i].substring(0,1);
System.out.print("\n" + s + ": ");
while (bridgeHand[j].getCardSuitName().equals(suit[i])) {
System.out.print(bridgeHand[j]);
j++;
}
}
}
}
答案 0 :(得分:3)
您的j
未被重置,while
循环在遇到错误的卡片时就会停止,这是不正确的,因为您想要查看所有卡片,但只打印了正确适合的卡片。
尝试:
for(int i = 0; i < 4; i++) {
String s = suit[i].substring(0,1);
System.out.print("\n" + s + ": ");
for(int j = 0; j < bridgeHand.length; j++) {
if (bridgeHand[j].getCardSuitName().equals(suit[i])) {
System.out.print(bridgeHand[j]);
}
}
}
答案 1 :(得分:2)
java.lang.ArrayIndexOutOfBoundsException:13
这意味着您正在访问数组越界。你给它一个索引值13.我还没有读过你的代码,但我猜这是一个错误的错误。
...阅读...
是的。你经常增加j。错误消息也为您提供了行号。
在DeckStuff.main(DeckStuff.java:29)“
这意味着错误位于文件DeckStuff.java的第29行