Исключение нулевого указателя при создании массива объектов из командной строки

Я делаю программу, которая принимает входные данные, скажем: 3H 4C 8S 2D 4H покерная комбинация с тремя сердцами, четырьмя трефами и т. д.

У меня есть класс карт, и у каждой карты есть ранг и масть, которые определены как перечисления. Вот методы, которые я использую в классе Card:

    // METHOD TO GET CARDS IN RANK ORDER
    public static Card[] getHand(String[] args){
        Card[] hand = new Card[5];
        for (Rank r : Rank.values()) {
            int j=0;
            for (int i = 0 ; i < args.length ; i++) {
                    if(r.rankNum().equals(args[i].substring(0,1))){
                            hand[j] = new Card(r, Card.getSuit(args, i));
                            j++;
                    }
             }
        } return hand;
    }

    // METHOD TO GET SUIT
    public  static Suit getSuit(String[] args, int i) {
            for (Suit s : Suit.values()) {
                    if (s.suitCode().equals(args[i].substring(1,2))) {
                            return s;
                    }
            } return null;
    }

В основном я делаю следующее:

// TEST CARD ARRAY AND CARD PRINT
Card[] handTest = new Card[5];
handTest[0] = new Card(Rank.TWO, Suit.CLUBS);
handTest[1] = new Card(Rank.TWO, Suit.CLUBS);
handTest[2] = new Card(Rank.TWO, Suit.CLUBS);
handTest[3] = new Card(Rank.TWO, Suit.CLUBS);
handTest[4] = new Card(Rank.TWO, Suit.CLUBS);
for (int i = 0 ; i < 5 ; i++){
    handTest[i].printCard();
}

// TRY WITH ACTUAL ARGUMENT INPUT (3H 4D 7C 2D 8S)
Card[] hand = new Card[5];
hand = Card.getHand(args);
for (int i = 0 ; i < 5 ; i++){
    hand[i].printCard();
}

Я получаю следующий вывод

Suit: CLUBS   Rank: TWO
Suit: CLUBS   Rank: TWO
Suit: CLUBS   Rank: TWO
Suit: CLUBS   Rank: TWO
Suit: CLUBS   Rank: TWO
Suit: SPADES   Rank: EIGHT
Exception in thread "main" java.lang.NullPointerException
at Poker.main(Poker.java:20)

Если у меня есть printCard метод в самой внутренней петле getHandЯ не получаю ошибки, но после getHand метод запущен, что я получаю исключение нулевого указателя.

Сейчас я прочитал несколько сообщений, объясняющих исключения нулевого указателя, но я не могу исправить это. Строка 20 относится к hand[i].printCard();

0 ответов

Другие вопросы по тегам