Java代码中的NullPointerException

giz*_*gok 0 java oop

我正在从oracle的网站上学习Java和OOPS.我正在做这个练习.

我运行此代码时收到空指针异常.有人可以向我解释我做错了什么吗?

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

Deck.java

import java.util.*;

public class Deck {
    public ArrayList<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);
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

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());  
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

sol*_*dil 8

public ArrayList<Card> cards; 永远不会初始化,使用 public ArrayList<Card> cards = new ArrayList<Card>();