Заполнение массива Java элементами, созданными в другом классе - PullRequest
0 голосов
/ 15 февраля 2020

Я пытаюсь заполнить колоду карт в своем классе "Колода" картами, созданными в моем классе "Карты". Когда я печатаю результат в своем классе Deck, я получаю 52 «ноля», что говорит мне, что они общаются, но не очень хорошо. Я скопировал код ниже. Куда я иду не так? Спасибо!

public class Card {
    public String cardName;
    private int[] cardValue = {(Integer) null, 1, 2, 3, 4, 5, 6, 7, 8, 
        9, 10, 11};
    private String[] cardSuit = {"C", "D", "H", "S"};


    public Card(String cardName, int[] cardValue, String[] cardSuit) {
        this.cardName = cardName;
        this.cardValue = cardValue;
        this.cardSuit = cardSuit;
    }
    public String makeCard(int[] cardValue, String[] cardSuit) {
        for(int i = 0; i < 12; i++) {
            for(int j = 0; j < 4; j++) {
                cardName = cardValue[i] + cardSuit[j];
                j++;
            }
            i++;
        }
        return cardName;
    }   
}
import java.util.Arrays;

public class Deck {

    public static String[] cardDeck = new String[52];

    public String[] makeDeck(String cardName) {
        for(int i =0; i < 52; i++) {
            cardDeck[i] = cardName;
            i++;
        }

        Arrays.fill(cardDeck, cardName);
        return cardDeck;
    }

    public static void main(String[] args) {
        System.out.println(Arrays.toString(cardDeck));
    }
}

Ответы [ 2 ]

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

Ваши два класса все еще независимы. Я изменил ваш код следующим образом:

public class Card {
    private String[] cardDeck = new String[52];
    private int[] cardValue = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
    private String[] cardSuit = {"C", "D", "H", "S"};

    public String[] makeDeck() {
        int c = 0;
        for (int i = 0; i < cardValue.length; i++) {
            for (int j = 0; j < cardSuit.length; j++) {
                cardDeck[c] = cardSuit[j] + cardValue[i];
                c++;
            }
        }
        return cardDeck;
    }
}
import java.util.Arrays;

public class Deck {
    public static void main(String[] args) {
        Card card = new Card();
        System.out.println(Arrays.toString(card.makeDeck()));
    }
}

Метод makeDeck в классе Card теперь будет инициализировать колоду путем перебора каждого значения карты в колоде, и результат будет добавляется в массив cardDeck String.

Кроме того, класс Deck вызывает этот метод и отображает колоду.

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

Вы создаете новый строковый массив с String[] cardDeck = new String[52];, но вы никогда не назначаете никакие значения этому массиву. Строка является объектом и инициализируется нулем. Таким образом, только ноль будет напечатан. Вы никогда не вызываете метод любого класса и не инициализируете колоду и карту.

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