2016-12-10 3 views
0

Also versuche ich zu testen, ob mein DeckOfCards-Array ordnungsgemäß ausgedruckt wird. Hier ist der CodeNullPointerException beim Versuch, Feld Array als Argument zu verwenden

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; 
      } 
     } 
    } 

Wie man sehen kann ich das Gesicht und Anzug in einem Array definiert haben, und ich möchte, dass sie an ihren richtigen Wert zuzuweisen, aber wenn ich versuche, es zu laufen, erhalte ich eine Nullpointer an der Linie deckOfCards[i].setSuit(suit[suitCount]);

Ich kann nicht herausfinden, warum es mir diesen Fehler gibt, wenn ich es debugge, scheint es alle Felder zu initialisieren, aber wenn es dort ankommt, stürzt es ab.

Antwort

2

Sie initialisieren das Array, aber nicht die Elemente darin. Sie können das in der Schleife tun:

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