无法将对象添加到Class

时间:2015-04-24 14:51:13

标签: java class object

相对较新的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);
    }

2 个答案:

答案 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() ......