问题:只有内存地址是arraylist的out.print。例如:Card@14318bb。
我真的希望这是一个新问题。我看了又看,又读又学,但似乎还是把这本书搞砸了!代码:
DeckMain.java
public class DeckMain {
public static void main(String[] args) {
List<Card> newDeck = new ArrayList<Card>( );
Card.Rank[] ranks = Card.Rank.values();
Card.Suit[] suits = Card.Suit.values();
for (Card.Suit suit : suits) {
for (Card.Rank rank : ranks) {
newDeck.add(new Card(rank, suit));
}
}
int n = newDeck.size();
for (int i = 0; i < n ; i++) {
System.out.println((i + 1) + ": " + newDeck.get(i));
}
}
}
Card.java
public class Card {
public enum Suit { CLUBS, DIAMONDS, HEARTS, SPADES; }
public enum Rank { TWO, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT,
NINE, TEN, JACK, QUEEN, KING, ACE; }
final Rank rank;
final Suit suit;
public Card (final Rank rank, final Suit suit) {
this.rank = rank;
this.suit = suit;
}
}
最佳答案
您没有覆盖 Card 类中的 toString()
方法。因此,您使用继承自 Object
类的对象:
getClass().getName() + '@' + Integer.toHexString(hashCode())
在您的 Card
类中覆盖它:
@Override
public String toString(){
return suit.name()+"-"+rank.name();
}
关于java枚举到arraylist卡片组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20532344/