2016-12-10 39 views
0

所以我試圖測試,看看我的deckOfCards數組是否打印出正確。下面是代碼NullPointerException當試圖使用字段數組作爲參數

public class Deck { 
    private static final String face[] = {"Ace", "Two", "Three", "Four", "Five", "Six", "Seven", 
              "Eight", "Nine", "Ten", "Jack", "Queen", "King"}; 
    private static final String suit[] = {"Spade", "Club", "Diamond", "Heart"}; 
    private static final Card deckOfCards[] = new Card [52]; 

    public Deck(){ 
     int suitCount = 0; 
     int faceCount = 0; 
     int faceValue = 0; 
     for(int i = 1; i < deckOfCards.length; i++){ 
      deckOfCards[i].setSuit(suit[suitCount]); 
      deckOfCards[i].setFace(face[faceCount], faceValue); 
      suitCount++; 
      faceCount++; 
      faceValue++; 
      if(suitCount == 3){ 
       suitCount = 0; 
      } 
      if(faceCount == 12){ 
       faceCount = 0; 
      } 
      if(faceValue == 13){ 
       faceValue = 1; 
      } 
     } 
    } 

正如你可以看到,我定義數組中的面部和衣服,我想將它們分配給他們應有的價值,但是當我嘗試運行它,我得到一個NullPointerException在線deckOfCards[i].setSuit(suit[suitCount]);

我似乎無法弄清楚爲什麼它給了我這個錯誤,當我調試它,它似乎初始化所有的領域,但當它到達那裏崩潰。

回答

2

您初始化數組,但不是其中的元素。你可以在循環中做到這一點:

deckOfCards[i] = new Card(); 
deckOfCards[i].setSuit(suit[suitCount]);