Java代码中的NullPointerException
我正在oracle的网站上学习Java和OOPS。我正在做 当我运行这段代码时,我得到一个空指针异常。有人能解释一下我做错了什么吗 Card.javaJava代码中的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
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,它可能会加快速度。删除空行也不会有什么坏处。我很抱歉没有设置异常。我太傻了,不能自己调试。谢谢大家这么快就帮了忙。