java - ArrayIndexOutOfBounds 错误

标签 java arraylist indexoutofboundsexception

我有一个问题。

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 个卡片对象添加到一个名为 Deck 的 ArrayList 中。我编写了 for 循环来创建一副卡片组中可能的 52 张卡片。错误是什么?

最佳答案

您的问题在这里:

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 < ranks.length但是k < 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]));          
    } 
}

关于java - ArrayIndexOutOfBounds 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27547908/

相关文章:

java - 覆盖 LinearLayout 的构造函数之一的奇怪问题

Java Scanner,将来自控制台的用户输入作为单独的单词放入数组列表中

Java:如何让扫描仪仅匹配第一次出现的情况,如果之前已匹配过则跳过

java - mergeSort ArrayIndexOutOfBoundsExecption

java - 遍历数组的边缘成员时数组索引越界

java - 我有一个包含 14 个值的 ArrayList,但出现 IndexOutOfBounds 异常。我检查它们是否为空并打印了值

java - 在 android ScrollView 中禁用 "flinging"?

java - 创建 Google 云端硬盘文件时出现 FileNotFoundException

java - 如何正确同步多个线程访问的列表?

java - Facebook 图片转 Google App Engine 应用程序 (Java)