2012-05-12 4 views
1

При выполнении следующего кода я получаю ошибку «Exception в потоке„главный“java.lang.NullPointerException»Не правильно заполнение массива Java

Я думаю, что он должен делать с заполнением палубы [i2] Я пытаюсь сделать это, добавляя значение каждый раз, когда цикл for запущен.

Может кто-нибудь сказать мне, что происходит не так?

public class Deck { 
    private Cards cards; 
    private String[] suits; 
    private String[] ranks; 
    private String[] deck; 
    private int i2; 


    public void Deck() { 
     //Instantiate class Cards 
     cards = new Cards(); 
     //run method to get cards/suits 
     suits = cards.getSuits(); 
     ranks = cards.getRanks(); 

     //Build an array (deck) and fill it with all possible cards 
     i2 = 1; 
     for (int i = 0; i < suits.length; i++) { 

      //Run through ranks 
      for (int i1 = 0; i1 < ranks.length; i1++) { 
       deck[i2] = suits[i] + ranks[i1]; 
       2++; 
      } 
     } 
    } 
} 

ответ

1

Вы никогда не инициализировали «колоду». Должно быть что-то вроде:

deck = new String[ranks.length * suits.length]; 
1

deck поле не инициализирована, поэтому доступ к ней бросает NullPointerException. Перед тем как строить его, инициализировать deck:

deck = new String[sizeOfDeck]; 

Где sizeOfDeck является int, представляющий размер палубы.

1

Вы инициализировали массив deck? должно быть заявление, как это где-то перед внешней for петли:

deck = new String[ranks.length * suits.length]; 

Кроме того, убедитесь, что для инициализации suits и ranks массивов в Cards классе аналогичным образом.

Смежные вопросы