Он продолжает бросать это исключение, но он появляется между выходом программы, которая до сих пор работает точно так, как мне это нужно. В чем проблема?NullPointerException, но все еще работает?
Хорошо, так что это, где он бросает исключение: общественного класса RunGame {
public static void main(String[] args) {
//Create players
Hand Player1 = new Hand(5);
Hand Player2 = new Hand(5);
Hand Player3 = new Hand(5);
Hand Player4 = new Hand(5);
Deck deck = new Deck();
Card print = new Card(1,'c');
deck.Shuffle();
for (int i = 0; i <= 52; i++){
print = deck.getCard(i); //**THROWS HERE**
System.out.println(print.toString());
}
И тогда в моем классе деке есть:
public class Deck {
private char suit;
private int value;
private Card [] deck = new Card[52];
public Deck(){
int count = 0;
for(int i = 1; i <= 4; i++) {
if (i == 1)
{
suit = 'C';
}
else if (i == 2) {
suit = 'D';
}
else if (i == 3) {
suit = 'H';
}
else {
suit = 'S';
}
for (int x = 1; x <= 13; x++){
deck[count] = new Card(x, suit);
count++;
}
}
}
и
public Card getCard(int i){
int v = deck[i].getValue(); //**AND HERE**
char s = deck[i].getSuit();
Card temp = new Card(v,s);
return temp;
}
I просто хотел распечатать колоду, чтобы убедиться, что она правильно перетасовывается. Все печатает великолепно, но это все еще показывает это. (Мой объект-колода представляет собой массив из 52 карт, а методы getValue и getCard относятся к классу карты.)
Вы должны показать код - в частности линия, связанная с NPE. В противном случае вы просите нас угадать, что код не показан, и наши навыки ясновидения весьма ограничены. –
Я бы посмотрел на трассировку стека и посмотрю, где это происходит. Проблема заключается в том, что код обращается к ссылке, которая является «null». –
Пожалуйста, прикрепите полный код для вашего класса 'Deck'. – Trein