【问题标题】:Issue printing out objects from arraylist发出从arraylist打印出对象的问题
【发布时间】:2013-10-24 13:33:14
【问题描述】:

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

它正在为手中牌的价值和花色打印一些疯狂的东西 我认为它们要么是数组列表中的内存位置,要么是十六进制值,我不确定是否需要它来打印西装并排名任何帮助表示赞赏

【问题讨论】:

    标签: java arraylist


    【解决方案1】:

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

    您可以轻松地将Card 类中的现有方法displayCard 更改为toString 方法。这比通过在卡片方法中调用System.out.printlnCard 打印出自身具有更大的灵活性。

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

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

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

    【讨论】:

      【解决方案2】:

      您必须在 Card 类中提供 toString() 方法。

      例如:

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        • Arrays.toString(array)可以使用。这个问题是关于Lists 而不是数组。
        • Arrays.toString(array) 用于数组。这里我们有一个ArrayList,不是吗?
        • 是的,我必须遍历它才能打印每张卡片。
        猜你喜欢
        • 1970-01-01
        • 2020-08-09
        • 1970-01-01
        • 2015-06-10
        • 1970-01-01
        • 2016-12-19
        • 1970-01-01
        • 2023-04-10
        相关资源
        最近更新 更多