【问题标题】:ArrayIndexOutOfBounds Error [closed]ArrayIndexOutOfBounds 错误 [关闭]
【发布时间】:2015-02-17 07:38:59
【问题描述】:

我有问题。

public class Deck {
    //deck contents returns every card in the deck

    String[] suits = {"Clubs", "Hearts", "Diamonds", "Spades"};
    String[] ranks = {"Deuce", "Three", "Four", "Five", "Six", "Seven",
                      "Eight", "Nine", "Ten", "Jack", "Queen", "King", "Ace"};
    int[] values = {2,3,4,5,6,7,8,9,10,10,10,10,11};

    ArrayList<Card> deck = new ArrayList<Card>();

    ArrayList<Card> cardsDealt = new ArrayList<Card>(); //unused here

            Random rand = new Random(); //unused here

    public Deck(){
            for(int i = 0; i < suits.length; i++){
                for(int k = 0; i < ranks.length; k++){
                        deck.add(new Card(suits[i], ranks[k], values[k]));          
                } 
            }
        }

我收到 IndexOutOfBoundsException 错误。我的任务是创建一个 Deck 对象,然后将 52 个 Card Objects 添加到一个名为 deck 的 ArrayList 中。我编写了 for 循环来创建卡片组中可能的 52 张卡片中的每一张。错误是什么?

【问题讨论】:

  • i &lt; ranks.length 不是您想要的循环绑定。
  • 我会用什么代替?
  • 仔细查看循环。查看它正在初始化和递增的变量,然后查看您正在检查的变量。
  • 另外我忘了提一下,Card 对象的参数列表是 String 花色、String rank 和 int 值。
  • 在这里并不重要。再看看你的第二个循环!

标签: java arraylist indexoutofboundsexception


【解决方案1】:

你的问题在这里:

for(int i = 0; i < suits.length; i++){
    for(int k = 0; i < ranks.length; k++){
                   ^
        deck.add(new Card(suits[i], ranks[k], values[k]));          
    } 
}

不是i &lt; ranks.length,而是k &lt; ranks.length

for(int i = 0; i < suits.length; i++){
    for(int k = 0; k < ranks.length; k++){
        deck.add(new Card(suits[i], ranks[k], values[k]));          
    } 
}

【讨论】:

  • 谢谢你,我错过了大声笑
  • @noobforce 没问题,它有时会发生 ;) 不要忘记纠正!
  • 是的,我需要等待 10 分钟 :p
【解决方案2】:

在此处将i 替换为k

for(int k = 0; i < ranks.length; k++){

for(int k = 0; k < ranks.length; k++){

您不断检查i 是否小于ranks.length 以终止循环(在这个内部循环中,它总是...),所以k 继续增加超过ranks.length ,因此一旦您尝试访问套装[13]就会出现错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-28
    • 1970-01-01
    • 1970-01-01
    • 2016-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-10
    相关资源
    最近更新 更多