首先我有一个名为card的类,其代码为
public class Card
{
private int value;
private String suit;
// private int value;
//private String rank;
public Card (int v, String s)
{
value=v;
suit=s;
}
public int random()
{
int randomNum = ((int)(Math.random() * 100) % 13 +1);
return randomNum;
}
public void displayCard()
{
System.out.println(value + " of " + suit);
}
}
然后我有一个名为deck的类,其代码为
import java.util.*;
public class Deck
{
public ArrayList<Card> card;
private ArrayList<String> suits;
private ArrayList<Card> hand;
public Deck()// time to build a deck
{
card=new ArrayList<>();
suits=new ArrayList<>();
suits.add("Hearts");
suits.add("Spades");
suits.add("Clubs");
suits.add("Diamonds");
for (int y=2; y<15; y++)
{
card.add(new Card(y,suits.get(0)));
}
for (int y=2; y<15; y++)
{
card.add(new Card((y),suits.get(1)));
}
for (int y=2; y<15; y++)
{
card.add(new Card((y),suits.get(2)));
}
for (int y=2; y<15; y++)
{
card.add(new Card((y),suits.get(3)));
}
}//end of public deck
public ArrayList deal()// deal method
{
hand=new ArrayList<>();
for(int x = 0; x < 5; ++x)//build 5 card hand
{
hand.add(card.get(x));
System.out.println(card.get(x));
}
return hand;
}//end of public void deal
}// end of public class deck
然后我有了主要的
import java.util.ArrayList;
import java.util.*;
public class gamePlay
{
private static gamePlay player1;
public Deck fullDeck;
private ArrayList<Card> yourHand;
public gamePlay()
{
fullDeck=new Deck();
System.out.println("Your poker hand is a");
yourHand = fullDeck.deal();
//System.out.println(yourHand);
}
public static void main(String[] args)
{
player1 = new gamePlay();
}
}
它打印出一些疯狂的东西,用于手中卡片的价值和适合性 我认为他们要么是arraylist的记忆位置,要么是十六进制值,我不确定是否需要打印套装和等级任何帮助表示赞赏
答案 0 :(得分:4)
如果您的类实现了正确的toString
方法,它将完美显示。
您可以轻松地将displayCard
课程中的现有方法Card
更改为toString
方法。这比通过在卡片方法中调用Card
让System.out.println
打印出来更具灵活性。
@Override
public String toString() {
return value + " of " + suit;
}
如果您希望该卡打印到System.out,您只需执行System.out.println(card);
也可以使用Arrays.toString(array)
将正常数组转换为String(例如,如果你有一个Card[]
变量)。 List
的大多数实现已经实现了正确的toString
方法,因此它将显示以逗号分隔的条目列表。
答案 1 :(得分:2)
您必须在toString()
课程中提供Card
方法。
例如:
@Override
public String toString() {
return String.format("Card [value=%s, suit=%s]", value, suit);
}
如果您不提供该方法,则默认值取决于JDK实现。通常,它是类的名称,后跟@
和对象哈希码。
答案 2 :(得分:-1)
我怀疑你必须遍历数组并单独打印每个项目。无法通过toString()数组本身打印数组的整个内容。