Я производить карточную игру и один из моих методов палубных выглядеть следующим образомполучает индекс вне границ, когда массив не пуст
public Cards getCardFromDeck() {
if (arrayOfCards.get(0) == null) {
makeDeck();
shuffleDeck();
}
Cards topOfTheDeck = arrayOfCards.get(0);
arrayOfCards.remove(0);
return topOfTheDeck;
}
arrayOfCards
связанный список, который я заполнил 52 карт.
Теперь проблема заключается в том, что это работает отлично, когда я вызываю getCardFromDeck
в основном методе.
Но когда я пытаюсь получить доступ к нему через другой класс который я метод, похожий ниже
public void addToHand() {
hand.add(deck.getCardFromDeck());
}
я получаю исключение в потоке «основного»
java.lang.IndexOutOfBoundsException: Индекс: 0, Размер: 0
, который, я думаю, говорит, что массив пуст.
Почему это ???
массив заполняется, когда доступ к нему из класса палубной который где этот метод, но не тогда, когда я достигаю от класса игрока
ниже вся моя колода класс
package com.jc.blackjack;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
public class Deck {
private List<Cards> arrayOfCards = new LinkedList<>();
public void makeDeck() {
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 13; j++) {
Cards card = new Cards(i, j);
arrayOfCards.add(card);
}
}
}
public void callDeck() {
for (Cards arbCards : arrayOfCards) {
System.out.println(arbCards);
}
}
public void shuffleDeck() {
Collections.shuffle(arrayOfCards);
}
public Cards getCardFromDeck() {
if (arrayOfCards.get(0) == null) {
makeDeck();
shuffleDeck();
}
Cards topOfTheDeck = arrayOfCards.get(0);
arrayOfCards.remove(0);
return topOfTheDeck;
}
}
Опубликовать стек trace и весь код, относящийся к 'deck' – Dave