2016-12-10 3 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]); 
관련 문제