Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java代码中的NullPointerException_Java_Oop - Fatal编程技术网

Java代码中的NullPointerException

Java代码中的NullPointerException,java,oop,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, S

我正在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;
    }
}
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);
            }
        }
    }
}
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());  
        }
    }
}
Deck.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;
    }
}
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);
            }
        }
    }
}
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());  
        }
    }
}

公共阵列列表卡从未初始化,请使用
公共ArrayList cards=new ArrayList()

您没有为
创建新的
阵列列表


替换:
公共阵列列表卡带有
公共ArrayList卡=新ArrayList()

您还需要初始化列表:

cards = new ArrayList<Card>();
cards=newarraylist();

现在,我更多地来自C#背景,但看起来不像您初始化了ArrayList卡。尝试使用以下命令在构造函数中初始化它:

cards = new ArrayList<Card>();
cards=newarraylist();

这将解决您的问题。

尝试将异常中的堆栈跟踪粘贴到问题中。这通常是开始诊断此类问题的最佳方法。如果你说你得到了这个NPE,它可能会加快速度。删除空行也不会有什么坏处。我很抱歉没有设置异常。我太傻了,不能自己调试。谢谢大家这么快就帮了忙。