2016-12-10 16 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が取得、その適切な値にそれらを割り当てたい見ることができるように私はそれが私にそれをデバッグするとき、それはすべてのフィールドを初期化するようだが、それがクラッシュすると、なぜ私にこのエラーを与えるのか分からないように見えることができません。

答えて

2

アレイは初期化されますが、配列は初期化されません。ループ内でこれを行うことができます:

deckOfCards[i] = new Card(); 
deckOfCards[i].setSuit(suit[suitCount]); 
関連する問題