我一直坚持这一点,但我想我已经意识到我的套牌制作者最终会制作一副卡片,它们都是循环中的最后一个值。
这是我的甲板制造商和手工编制者的代码。它包括一个对象卡,它有两个整数,这里是v和s。还有一张要处理的五张牌的ArrayList。我会感激一些帮助!
public ArrayList buildDeck(){
ArrayList<Card> newDeck = new ArrayList<Card>(52);
for(int v=0;v<13;v++)
for(int s=0;s<4;s++) {
Card nextCard = new Card(v,s);
newDeck.add(nextCard);
}
return newDeck;
}
public ArrayList fiveDeal() {
ArrayList<Card> handOfFive = new ArrayList<Card>(0);
for(int d=0;d<5;d++)
{
handOfFive.add(cardDeck.get((gen.nextInt(cardDeck.size()))));
}
return handOfFive;
}
这是我的Card类
public class Card
{
public static String value;
public static String suit;
public Card()
{
value="100";
suit="Cards";
}
public Card(int v, int s)
{
if(v==0)
value="Jack";
if(v==1)
value="Ace";
if(v==11)
value="Queen";
if(v==12)
value="King";
else
value = String.valueOf(v);
if(s==0)
suit="Clubs";
if(s==1)
suit="Spades";
if(s==2)
suit="Diamonds";
else
suit="Hearts";
}
public static String getCard(Object Card)
{
return value + " of " + suit;
}
}
答案 0 :(得分:3)
正如Marko Topolnik所预料的那样,错误出现在Card
课程中。变化
public static String value;
public static String suit;
到
public String value;
public String suit;
解决当前问题。
static
属性属于类本身,而非静态属性属于该类的特定实例。
另外,我会使用private
访问修饰符而不是public
并使用getter / setter方法来访问变量(eclipse可以为您生成方法)。通过这种方式,它们将被封装,您可以控制它们的访问和修改方式。
答案 1 :(得分:0)
我建议你自己创建一个Deck
课程,当强调deal
方法时从卡片中移除卡片。
除了已经提出的建议之外,您的问题可能是gen.nextInt(cardDeck.size())
始终返回相同的号码。但是,您的问题是您正在尝试使用ArrayList
进行卡片组建模而不删除。