Java Bluej阵列列表添加

Java Bluej阵列列表添加,java,bluej,Java,Bluej,我正在尝试制作一个纸牌游戏,并且准备好了我的纸牌类和牌组类,它编译的很好,但是当我尝试运行牌组的方法makeDeckFull时,我得到了输出:invalidnumberinvalidnumber 当我使用showDeck方法时,我看到的是这个,而不是“红心”,1 Cards@597f13c5(我不知道这是什么意思,也不知道如何修复) 任何帮助都将不胜感激:代码如下 甲板等级: import java.util.ArrayList; public class Deck { private

我正在尝试制作一个纸牌游戏,并且准备好了我的纸牌类和牌组类,它编译的很好,但是当我尝试运行牌组的方法makeDeckFull时,我得到了输出:invalidnumberinvalidnumber

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

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

甲板等级:

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); 
    }
import java.util.ArrayList;
公务舱甲板
{
私人露天甲板;
私有整数索引;
公共甲板()
{
deck=newarraylist();
}
公共空间
{
卡h1=新卡(“心”,1);
卡片h2=新卡片(“红心”,2);
卡片h3=新卡片(“红心”,3);
甲板。添加(h1);
索引++;
甲板。添加(h2);
索引++;
甲板。添加(h3);
索引++;
//为了节省空间,其余的都被省略了
}
公共空间展示平台()
{
系统输出打印LN(甲板);
}
卡片类别:

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");
        }
    }
}
公共类卡
{
私有字符串HEARTS=“HEARTS”;
私人字符串俱乐部=“俱乐部”;
私人字符串钻石=“钻石”;
私有字符串SPADES=“SPADES”;
公共整数;
公益诉讼;
公共卡()
{
suit=“未知诉讼”;
数字=0;
}
公共卡(字符串套装,整数)
{
西服;
setNumber(数字);
}
公共无效设置卡(字符串套装,整数2)
{
西服;
设置编号(编号2);
}
公共void setSuit(字符串newSuit)
{
如果(
(newSuit.equalsIgnoreCase(红心))||
(newSuit.等信号案例(钻石))||
(newSuit.平等信号案例(俱乐部))||
(newSuit.equalsIgnoreCase(SPADES)))
{
西服=新西服;
}
其他的
{
newSuit=“无效”;
系统输出打印(“无效”);
}        
}
public int getNumber()
{
返回号码;
}
公共字符串getSuit()
{
反诉;
}
公共无效集合号(int newNumber)
{
如果(newNumber>0&&newNumber1)需要覆盖
Cards
类中的
toString()
。按原样,您打印的是对象的引用(乱码)而不是“数据”。您还应该覆盖
Deck
toString()
方法,以便只打印列表


2) 我正在浏览您的
makeDeckFull()代码片段
,它似乎工作正常。您确定这三个插入是获得无效打印语句的地方吗?

我没有看到
setDeck
方法。另外,
Cards@597f13c5
表示您没有覆盖Cards类中的
toString
方法。或者
print
方法。我的坏消息是不清楚,我会立即编辑makeDeckFull方法和showDeck,再次抱歉。您还有机会回复吗?我如何重写toString()哇,这真的起作用了,即使我不知道如何……Tyman!没问题!如果我的答案是有用的,请考虑接受它!!):如果我有足够的发言权,我也会投票给你;如果你还在,如果我现在有一张52张卡片的列表,我有一个随机的生成器随机挑选出来,我能不知怎的打印出那张卡的位置吗?在名单上?