2016-11-21 5 views
-1

Ich bin eine Null-Zeiger-Ausnahme für diesen immer und ich bin nicht sicher, warumJava-Poker-Spiel Nullpointer

public static boolean hasPair(Card[] cards) { 
    int k=0; 
    cards = new Card[5]; 

    for (int atPos = 0; atPos<5; atPos++){ 
     for (int atPos2 = atPos+1; atPos2<5; atPos2++){ 

      if(cards[atPos].getValue() == cards[atPos2].getValue()){ 
       k++; 
      } 
      if (atPos2 == (cards.length-1) && k!=1){ 
       k=0; 
      } 
      else if (atPos2 == (cards.length-1) && k>=2){ 
       return true; 
      } 
     } 
    } 
    return false; 
} 

Meine Methode testet, ob meine Hand von Karten zwei Karten hat, die denselben Wert halten und der nul Zeiger sagt, dass es innerhalb dieser Linie

if(cards[atPos].getValue() == cards[atPos2].getValue()){ 

ich auch diese Methode haben ... könnte ich es als Helfer benutzen?

public Card[] deal(int numCards) { 
    Card[] newArray; 
    newArray = new Card[numCards]; 
     for (int index=0; index<numCards; index++){ 
      newArray[index] = cards.get(0); 
      cards.remove(0); 
    } 
    return newArray; 
    } 
+0

Da Sie die Zeile 'cards = new Card [5] haben;' oben auf Ihrer Methode ist Ihr 'cards' Array immer leer. Wahrscheinlich nicht, was Sie vorhatten, da Sie ein Array in die Methode übergeben. – khelwood

+0

Wie würde ich das beheben? – masonft

Antwort

3

In der zweiten Zeile erstellen Sie ein neues Array von Objekten Karte. Jedes Objekt in diesem Array ist null, daher müssen Sie das Array zuerst füllen.

+0

Wie würde ich das tun? – masonft

+0

Sie können das Array durchlaufen und jeder Position eine Objektkarte hinzufügen. Etwas wie: – klancar16

+0

für (int i = 0; i klancar16