“线程中的异常”;“主要”;java.lang.ArrayIndexOutOfBoundsException:13

“线程中的异常”;“主要”;java.lang.ArrayIndexOutOfBoundsException:13,java,Java,我试着用一个数组来处理桥牌手,然后按套装排序。程序处理所有13张卡,但我得到了错误 "Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 13 at DeckStuff.main(DeckStuff.java:29)" 任何帮助都将不胜感激 public static void main(String[] args) { Card.shuffleDeck(); Card.dumpCar

我试着用一个数组来处理桥牌手,然后按套装排序。程序处理所有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++;
        }
    }   
}
}
publicstaticvoidmain(字符串[]args){
Card.shuffleDeck();
dumpCards();
卡片[]桥牌=新卡片[13];
对于(int i=0;i
您的
j
没有被重置,而
while
循环在遇到错误匹配的卡时立即停止,这是不正确的,因为您希望检查所有卡,而只打印正确匹配的卡

尝试:

for(int i=0;i<4;i++){
字符串s=suit[i]。子字符串(0,1);
系统输出打印(“\n”+s+:”);
对于(int j=0;j
java.lang.ArrayIndexOutofBounds异常:13

这意味着您正在访问超出边界的数组。你给它一个13的索引值。我甚至还没有读过你的代码,但我猜这是一个逐个错误

…阅读

是的。你一直在增加j。错误消息也会给您一个行号

位于DeckStuff.main(DeckStuff.java:29)”


这意味着错误在DeckStuff.java文件的第29行,你能为我构建它吗,当我在for循环中将j重置为0时,它只处理“黑桃”“没有其他内容。@user2317612您可以单击“我的答案”复选框,它会将其标记为已接受。它让其他人知道这解决了问题,并给了我一些分数;因为你没有发布整个课程,我们很难弄清楚。
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]);
        }
    }
}