【问题标题】:Bluej ArrayList addBluej ArrayList 添加
【发布时间】:2014-06-03 14:24:24
【问题描述】:

我正在尝试制作纸牌游戏,并准备好我的纸牌类和套牌类,它可以编译,但是当我尝试运行套牌的方法 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); 
    }

卡类:

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");
        }
    }
}

【问题讨论】:

  • 我没有看到 setDeck 方法。此外,Cards@597f13c5 表示您尚未覆盖 Cards 类中的 toString 方法。
  • 或者print方法。
  • 不好意思,我不清楚,我马上编辑,makeDeckFull 方法和 showDeck,再次抱歉。
  • 你还能回复吗?

标签: java bluej


【解决方案1】:

1) 您需要在 Cards 类中覆盖 toString()。照原样,您正在打印出对象的引用(乱码)而不是“数据”。您还应该覆盖DecktoString() 方法,只打印出列表。

2) 我正在逐步检查您的代码 sn-p makeDeckFull(),它似乎工作正常。你确定这三个插入是你得到无效打印语句的地方吗?

【讨论】:

  • 如何覆盖 toString()?
  • 哇,这确实奏效了!尽管我不知道怎么做……伙计!
  • 没问题!如果我的回答对您有帮助,请考虑采纳! :)
  • 如果我有足够的代表,我也会投票给你;)如果你还在,如果我现在有一个包含 52 张卡片的数组列表,并且我有一个随机生成器可以随机选择,我可以以某种方式打印出该卡在列表中的位置吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-07-20
  • 2015-11-27
  • 2014-11-03
  • 2015-03-30
  • 2013-04-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多