Я пытаюсь реализовать имитацию игры в покер. Создал класс, в котором есть статический метод для создания игральной колоды (уникальность каждой карты реализовал через Enum и счетчик).
Для каждой партии игры должна "открыта" новая колода карт. В классе игры я создал ArrayList plaingDeck и 2 метода: create() и delete() соответственно. Но почему-то все элементы списка - null.
Код из класса PlaingDeck:
public static ArrayList<PlaingDeck> createNewPlaingDeck(){
ArrayList<PlaingDeck> arrayPD = new ArrayList<>();
for (int i = 0; i < 52; i++) {
arrayPD.add(new PlaingDeck());
}
return arrayPD;
}
Код из класса Play:
ArrayList<PlaingDeck> plaingDeck;
private void createNewDeck(){
plaingDeck = PlaingDeck.createNewPlaingDeck();
}
private void deleteDeck(){
plaingDeck.clear();
}
Сама ошибка при компиляции:
Cannot invoke "java.util.ArrayList.clear()" because "this.plaingDeck" is null
Класс Play полностью:
public class Play {
ArrayList<PlaingDeck> plaingDeck;
Random random = new Random();
private void createNewDeck(){
plaingDeck = PlaingDeck.createNewPlaingDeck();
}
private void deleteDeck(){
plaingDeck.clear();
}
// метод cardDistribution еще не реализован, он ни где не участвует
private void cardDistribution(Players players){
for (int i = 0; i < Players.arrayListPlayers.size(); i++) {
for (int j = 0; j < players.cardInHand.size(); j++) {
players.cardInHand.set(j, getRandomCard());
}
}
}
// метод getRandomCard тоже пока не реализован
private PlaingDeck getRandomCard(){
return null;
}
public static void main(String[] args) {
Play play = new Play();
Players.createPlayers(4);
play.createNewDeck();
for (int i = 0; i < play.plaingDeck.size(); i++) {
System.out.println(play.plaingDeck.get(i));
}
// for (Players players: Players.arrayListPlayers) play.cardDistribution(players);
// for (Players players: Players.arrayListPlayers) players.showCardinHand();
}
}
play.createNewDeck(); for (int i = 0; i < play.plaingDeck.size(); i++) { System.out.println(play.plaingDeck.get(i)); }
– ЛоуСкильныйДевелопер Jan 26 '23 at 10:10deleteDeck(). В коде, который вы привели здесь в комментарии, этой ошибки возникнуть не может. Опять же, добавьте в вопрос весь код классаPlay. – Byb Jan 26 '23 at 10:23deleteDeckвызван до инициализации поляplaingDeck. – Nowhere Man Jan 26 '23 at 11:01