Java 问题:从arraylist打印出对象

Java 问题:从arraylist打印出对象,java,arraylist,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

首先,我有一个名为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);
}

}
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
然后我有一个名为deck的类,代码如下

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);
}

}
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中的内存位置,要么是hexidecimal值我不确定是否需要它来打印西装和排名任何帮助都很感激

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

必须在Card类中提供toString方法

例如:

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

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

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

您可以轻松地将Card类中的现有方法displayCard更改为toString方法。这比通过调用卡的方法中的System.out.println让卡自己打印更灵活

@Override
public String toString() {
    return value + " of " + suit;
}
如果要将卡打印到System.out,只需执行System.out.printlncard


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

可以使用Arrays.tostringray。这个问题是关于列表而不是数组的。arrays.toStringarray是用于数组的。这里有一个ArrayList,不是吗?是的,我必须遍历它来打印每张卡。