从arraylist发出打印对象的问题

时间:2013-10-24 13:33:14

标签: java arraylist

首先我有一个名为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的记忆位置,要么是十六进制值,我不确定是否需要打印套装和等级任何帮助表示赞赏

3 个答案:

答案 0 :(得分:4)

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

您可以轻松地将displayCard课程中的现有方法Card更改为toString方法。这比通过在卡片方法中调用CardSystem.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()数组本身打印数组的整个内容。