Java 问题:从arraylist打印出对象
首先,我有一个名为card的类,代码如下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
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,不是吗?是的,我必须遍历它来打印每张卡。