Почему мой массив моделирует колоду карт, возвращающую нулевые объекты карты? - PullRequest
1 голос
/ 05 февраля 2020

так что это мой класс колод, заполняющий колоду карт

/**
Constructs a deck with 52 cards
*/
public Deck() {

    int k = 0;  // counter to keep track of elements in the deck array

    // nested for loops to populate the deck of cards with 4 suits and 13 possible rankings
    for (int i = 1; i < SUITS; i++) {
        for (int j = 1; j < RANKS; j++) {
            deckOfCards[k] = new Card(i, j);  // adds the cards to the deck array 
            k++;                              // increment the elements counter by 1
            System.out.println(deckOfCards[k]);
        }
    }

}

это мой класс карт, хотя я почти уверен, что с этой частью все в порядке

public class Card {

    private int rank;
    private int suit;

    /**
    * @param suit the suit of the card in a deck 
    * @param rank the rank of the card in a deck 
    */
    public Card(int suit, int rank) {

        this.rank = rank;       // initializing the rank 
        this.suit = suit;       // initializing the suit
    }

Когда я распечатываю карты в колоде, мне возвращается null. Есть идеи почему?

Ответы [ 2 ]

5 голосов
/ 05 февраля 2020
deckOfCards[k] = new Card(i, j);
k++;
System.out.println(deckOfCards[k]);

Вы устанавливаете deckOfCards[k], но печатаете deckOfCards[k+1].

0 голосов
/ 05 февраля 2020

Я предполагаю, что вы уже инициализировали deckOfCards, поэтому ваша проблема в том, что вы увеличиваете k перед печатью карты. Если вы удалите k ++ и измените println (deckOfCards [k]) на println (deckOfCards [k ++]), это должно сработать, потому что он использует k, а затем увеличивает его.

PS: извините за отсутствие формата кода, я делаю это на моем телефоне

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...