相对较新的Java,但我用Java编写了一些项目,在向类添加对象之前我从未遇到过问题。我在尝试添加对象时遇到空指针异常。
如果这是一个非常愚蠢的问题,请提前道歉,但我看不出我做错了什么。感谢。主类
public class Patience {
private Deck deck;
public static void main(String args[]){
game.testFunc();
}
public void testFunc(){
Deck testBlackCard = new BlackCard("2", "c");
System.out.println(testBlackCard.getRank());
deck.add(testBlackCard);
Deck testRedCard = new RedCard("5", "b");
deck.add(testRedCard);
}
超级(持有红牌和黑牌)
public class Deck{
public String rank;
public String suit;
public Deck(String rankOfCard, String suitOfCard){
this.rank = rankOfCard;
this.suit = suitOfCard;
}
public String getSuit(){
return suit;
}
public String getRank(){
return rank;
}
public void add(Deck testCard) {
this.add(testCard);
}
public class BlackCard extends Deck{
以下是BlackCard Class
public class BlackCard extends Deck{
public BlackCard(String rank, String suit){
super(rank, suit);
}
答案 0 :(得分:0)
只是一个快速提示,您可能想要调用您的Deck类卡,因为它似乎描述了卡的基础而不是卡的容器(如可能描述的卡片)
要实际添加卡,请调用deck的add方法,但看起来你的add方法只是调用自己创建一个无限递归。您实际上需要将卡片对象存储在某处,可能是卡片的ArrayList
要解决此问题,请尝试将您的普通卡类与您的套牌类分开。这是一个示例类结构:
Card -> BlackCard/RedCard (contains methods like getSuit and getRank)
ArrayList -> Deck (contains methods like add, draw, getCards, shuffle)
另外,我建议使用枚举器代表你的排名和套装而不是字符串,但是没有必要让程序正常运行。也许在你完成额外的学习机会之后尝试应用课程in this tutorial
答案 1 :(得分:0)
你可能想在调用deck.add()之前先创建一个新的deck实例...
所以你可能想要耐心课程中的private Deck deck = new Deck();
,然后拨打deck.add()
......