2

首先,我有一个带有此代码的名为 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();        
}
}

它正在打印出一些疯狂的东西,用于手中卡片的价值和花色

4

3 回答 3

4

如果您的类实现了正确的toString方法,它将完美地显示出来。

您可以轻松地displayCardCard类中的现有方法更改为toString方法。这比通过调用卡片的方法让Card打印本身具​​有更大的灵活性。System.out.println

@Override
public String toString() {
    return value + " of " + suit;
}

如果您希望卡片打印到 System.out,您只需执行System.out.println(card);

普通数组也可以转换为字符串,使用Arrays.toString(array)(例如,如果你有一个Card[]变量)。s 的大多数实现List已经实现了正确的toString方法,因此它将向您显示以逗号分隔的条目列表。

于 2013-10-24T13:37:30.560 回答
2

你必须在你的类中提供一个toString()方法。Card

例如:

@Override
public String toString() {
    return String.format("Card [value=%s, suit=%s]", value, suit);
}

如果您不提供该方法,则默认值取决于 JDK 实现。通常,它是类的名称,后跟 a@和对象哈希码。

于 2013-10-24T13:37:10.700 回答
-1

我怀疑您必须遍历数组并单独打印每个项目。无法通过 toString() 数组本身打印数组的全部内容。

于 2013-10-24T13:36:25.733 回答