2013-04-24 219 views
1

我想用一个数组来处理一个桥牌手,然后让它按套装排序。该计划处理所有13卡,但后来我得到的错误,线程“主”异常java.lang.ArrayIndexOutOfBoundsException: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++; 
     } 
    } 
} 
} 
+1

您应表明其行‘29’在未来,因为 – 2013-04-24 23:21:19

回答

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]); 
     } 
    } 
} 
+0

你可以为我建立它吗?当我在for循环中将j重置为0时,它只处理“黑桃”而没有其他任何东西。 – user2317612 2013-04-24 23:11:32

+0

@ user2317612 I已经更新了我的答案,请给我一个镜头 – 2013-04-24 23:16:40

+0

这很有效,谢谢。我猜我的while循环被打破了。 – user2317612 2013-04-24 23:24:43

2

java.lang.ArrayIndexOutOfBoundsException:13

这意味着你访问数组越界。你给它的索引值为13.我甚至还没有读你的代码,但我猜这是一个错误的错误。

...阅读...

是的。你不断增加j。错误信息也会给你一个行号。

在DeckStuff.main(DeckStuff.java:29)”

这意味着该错误是在第29行中的文件DeckStuff.java

相关问题