I'm learning Java and OOPS from oracle's website. I'm doing this exercise.
I'm getting a null pointer exception when I run this code. Can someone explain to me what I've done wrong?
Card.java
public class Card {
public enum Suits {
SPADE,
CLUB,
DIAMOND,
HEART
}
public enum Ranks {
Ace,
DEUCE,
THREE,
FOUR,
FIVE,
SIX,
SEVEN,
EIGHT,
NINE,
TEN,
JACK,
QUEEN,
KING
}
public Ranks rank;
public Suits suit;
public Card(Card.Ranks rank,Card.Suits suit) {
this.rank=rank;
this.suit=suit;
}
}
Deck.java
import java.util.*;
public class Deck {
public ArrayList&l开发者_开发问答t;Card> cards;
private Card card;
public Deck() {
for(Card.Suits s: Card.Suits.values()) {
for(Card.Ranks r:Card.Ranks.values()) {
card=new Card(r,s);
cards.add(card);
}
}
}
}
DisplayCards.java
public class DisplayCards {
public static void main(String [] args) {
Deck d=new Deck();
for( Card c: d.cards) {
System.out.println("Rank of the Card:"+c.rank.toString());
System.out.println("Suit of the Card:"+c.suit.toString());
}
}
}
public ArrayList<Card> cards;
is never initialized, use public ArrayList<Card> cards = new ArrayList<Card>();
you did not create the new ArrayList
for cards
.
replace: public ArrayList<Card> cards;
with public ArrayList<Card> cards = new ArrayList<Card>();
You need to initialize the list as well:
cards = new ArrayList<Card>();
Now I'm coming from more of a C# background, but it doesn't look like you initialized your ArrayList Cards. Try initializing it in the constructor with:
cards = new ArrayList<Card>();
and that should fix your problem.
精彩评论