我的嵌套 For 循环不起作用

My Nested For Loop is not working

所以我正在为纸牌游戏创建套牌构造器,其中 for 循环不起作用。这是它的代码,忽略构造函数中的第三个整数变量,因为它不能解决问题,所以我将其注释掉:

public Deck(String[] ranks, String[] suits, int[] values) {
    cards = new ArrayList<Card>();
    for(int a = 0; a<=ranks.length; a++){
            for(int b=0; b<=suits.length;b++){
                cards.add(new Card(ranks[a],suits[b], 0));
                System.out.println(cards);
                size+=1;
            }
        }
    }

但是,我的嵌套 for 循环不起作用。我为一副牌中的所有牌创建了一个花色和 运行ks 数组,从 One 到 Ace 以及包含 "Hearts"、"Spades"、"Clubs"、[=24 的花色数组=].这是我在进行故障排除时收到的打印输出以及我收到的错误消息。

 [(One of Hearts (point value = 0)][(One of Hearts (point value = 0), (One of Spades (point value = 0)]
    [(One of Hearts (point value = 0), (One of Spades (point value = 0), (One of Clubs (point value = 0)]
    [(One of Hearts (point value = 0), (One of Spades (point value = 0), (One of Clubs (point value = 0), (One of Diamonds (point value = 0)]
    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
        at Deck.<init>(Deck.java:36)
        at DeckTester.main(DeckTester.java:14)

我的理解是,嵌套的 for 循环将完成包含 4 套西装的 Suits 数组列表,就像它在打印输出中一样。但是,我认为在 运行 经过四次之后,"a" for 循环不会产生错误,而是会移动到 运行ks 数组中的下一项而不是结束.所以它的有序对输出看起来像

(0,0) (0,1) (0,2) (0,3) (1,0) (1,1) (1,2) (1,3) etc.

任何帮助将不胜感激,感谢您抽出宝贵时间。

n 个元素的数组具有从 0n-1 的索引。 n 是此类数组的无效索引。

你的指数差了一个。应该是:

for(int a = 0; a<ranks.length; a++){
        for(int b=0; b<suits.length;b++){
            cards.add(new Card(ranks[a],suits[b], 0));
            System.out.println(cards);
            size+=1;
        }
    }
}

如果不需要数组索引,可以使用for-each循环。

它可以让你避免这种错误。

for(String ra : ranks){
        for(Stirng su : suits){
            cards.add(new Card(ra, su, 0));
            System.out.println(cards);
            size+=1;
        }
    }
}

它很容易阅读,但不能在所有情况下使用。