Java Bluej阵列列表添加
我正在尝试制作一个纸牌游戏,并且准备好了我的纸牌类和牌组类,它编译的很好,但是当我尝试运行牌组的方法makeDeckFull时,我得到了输出:invalidnumberinvalidnumber 当我使用showDeck方法时,我看到的是这个,而不是“红心”,1 Cards@597f13c5(我不知道这是什么意思,也不知道如何修复) 任何帮助都将不胜感激:代码如下 甲板等级:Java Bluej阵列列表添加,java,bluej,Java,Bluej,我正在尝试制作一个纸牌游戏,并且准备好了我的纸牌类和牌组类,它编译的很好,但是当我尝试运行牌组的方法makeDeckFull时,我得到了输出:invalidnumberinvalidnumber 当我使用showDeck方法时,我看到的是这个,而不是“红心”,1 Cards@597f13c5(我不知道这是什么意思,也不知道如何修复) 任何帮助都将不胜感激:代码如下 甲板等级: import java.util.ArrayList; public class Deck { private
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张卡片的列表,我有一个随机的生成器随机挑选出来,我能不知怎的打印出那张卡的位置吗?在名单上?