Исключение нулевого указателя при создании массива объектов из командной строки
Я делаю программу, которая принимает входные данные, скажем: 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();