我试着做一个纸牌游戏,我的卡片类和我的甲板类准备好了,它编译好了,但是当我尝试运行makeDeckFull方法时,我得到了输出:失效编号
当我使用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");
}
}
}发布于 2014-04-19 02:58:14
1)您需要在toString()类中重写Cards。实际上,您打印的是对象的引用(胡言乱语),而不是“数据”。您还应该重写Deck的Deck方法,使其只打印出列表。
2)我正在逐步了解您的makeDeckFull()代码片段,它似乎运行得很好。您确定这三种插入都是获得无效打印语句的地方吗?
https://stackoverflow.com/questions/23164913
复制相似问题