首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bluej ArrayList添加

Bluej ArrayList添加
EN

Stack Overflow用户
提问于 2014-04-19 01:56:26
回答 1查看 6.4K关注 0票数 0

我试着做一个纸牌游戏,我的卡片类和我的甲板类准备好了,它编译好了,但是当我尝试运行makeDeckFull方法时,我得到了输出:失效编号

当我使用showDeck方法时,我看到的不是“心脏”,而是1 Cards@597f13c5 (我不知道它意味着什么,也不知道如何修复它)

任何帮助都将不胜感激:代码如下。

甲板级:

代码语言:javascript
复制
import java.util.ArrayList;
public class Deck
{
    private ArrayList<Cards> deck;
    private int index;

    public Deck()
    {
        deck = new ArrayList<Cards>();
    }

    public void makeDeckFull()
    {
        Cards h1 = new Cards("Hearts", 1);
        Cards h2 = new Cards("Hearts", 2);
        Cards h3 = new Cards("Hearts", 3);
        deck.add(h1);
        index ++;
        deck.add(h2);
        index ++;
        deck.add(h3);
        index ++;
        //Rest of these is left out to conserve space
    }

    public void showDeck()
    {
        System.out.println(deck); 
    }

卡片类:

代码语言:javascript
复制
public class Cards
{
    private String HEARTS = "Hearts";
    private String CLUBS = "Clubs";
    private String DIAMONDS = "Diamonds";
    private String SPADES = "Spades";
    public int number;
    public String suit;
    public Cards()
    {
        suit = "unknown suit";
        number = 0;
    }

    public Cards(String suit, int number)
    {
        setSuit(suit);
        setNumber(number);

    }

    public void setCard(String suit, int number2)
    {
        setSuit(suit);
        setNumber(number2);

    }
    public void setSuit(String newSuit)
    {
        if(
            (newSuit.equalsIgnoreCase(HEARTS)) ||
            (newSuit.equalsIgnoreCase(DIAMONDS)) ||
            (newSuit.equalsIgnoreCase(CLUBS))    ||
            (newSuit.equalsIgnoreCase(SPADES)))
        {
            suit = newSuit;
        }
        else 
        {
            newSuit = "invalid";
            System.out.print("Invalid");
        }        
    }
    public int getNumber()
    {
        return number;
    }
    public String getSuit()
    {
        return suit;
    }

    public void setNumber(int newNumber)
    {

        if(newNumber >0 && newNumber <=10)
        {
            number = newNumber;
        }
        else
        {
            number = 0;
            System.out.print("invalid number");
        }
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-19 02:58:14

1)您需要在toString()类中重写Cards。实际上,您打印的是对象的引用(胡言乱语),而不是“数据”。您还应该重写DeckDeck方法,使其只打印出列表。

2)我正在逐步了解您的makeDeckFull()代码片段,它似乎运行得很好。您确定这三种插入都是获得无效打印语句的地方吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23164913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档