Так что я создаю конструктор колоды для карточной игры, в которой цикл for не работает. Это код для него, и игнорировать третью переменную целого в конструкторе для этого не решает проблему, и поэтому я прокомментировал это:My Nested For Loop не работает
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;
}
}
}
Мои вложен цикл не работает, однако. Я создал набор костюмов и рангов для всех карт в колоде от одного до туза и массив костюмов, содержащий «Hearts», «Spades», «Clubs», «Diamonds». Вот вывод для печати, который я получал при устранении неполадок, а также сообщение об ошибке, которое я получаю вместе с ним.
[(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)
Мое понимание было то, что вложенная цикл будет закончить список костюмов массива, который содержит 4 масти так же, как это имеет в печатной продукции. Тем не менее, я думал, что после того, как он пробежал четыре раза, вместо того, чтобы создавать ошибку, цикл «a» для этого переместится в следующий элемент в массиве рангов, а не заканчивается. Таким образом, его вывод в упорядоченных парах будет выглядеть так:
(0,0) (0,1) (0,2) (0,3) (1,0) (1,1) (1,2) (1,3) etc.
Любая помощь будет принята с благодарностью, и я благодарю вас за ваше время.
См. Также http://stackoverflow.com/questions/5554734/what-causes-a-java-lang-arrayindexoutofboundsexception-and-how-do-i-prevent-it – Raedwald