我正在尝试使用枚举来表示花色和牌值来制作一副牌。我正在尝试打印枚举列表,但我只得到它们的数值,而不是对象名称。我在 newboston 上观看了该视频超过 9000 次,但似乎无法弄清楚这一点。
这是我运行程序时的打印输出
123456789101112131 2 3 4
我的总体目标是将这些枚举放入一个数组列表中,在那里我可以将它们分配给玩家。当我打印这些语句时,它不应该告诉我(Ace、King、Queen...等)吗?
打印报表
for(CardValue card : CardValue.values()) {//Enhanced for loop
System.out.printf("%s",card);//I tried using different styles of print to see if it would change anything
}
for(Suit card : Suit.values()) {//Enhanced for loop
System.out.println(card.toString());
}
枚举类卡值
public enum CardValue
{
ACE(1),
TWO(2),
THREE(3),
FOUR(4),
FIVE(5),
SIX(6),
SEVEN(7),
EIGHT(8),
NINE(9),
TEN(10),
JACK(11),
QUEEN(12),
KING(13);
private final int cardValue;
private CardValue (int value)
{
this.cardValue = value;
}
public int getCardValue() {
return cardValue;
}
public String toString(){
return String.format("%s", cardValue);
}
}
枚举类套装
public enum Suit
{
HEARTS(1),
SPADES(2),
CLUBS(3),
DIAMONDS(4);
private final int suit;
private Suit (int value)
{
this.suit = value;
}
public int getCardSuit() {
return suit;
}
public String toString(){
return String.format("%s", suit);
}
}
最佳答案
您的 toString
方法应如下所示:
public String toString(){
return String.format("%s", this.name());
}
您还可以在打印枚举值时直接利用内置的 name() 方法。在您的代码示例中,您只是打印您自己在两个枚举中定义的描述字段。 name() 方法将返回枚举“name”的实际字符串值,该值唯一定义当前枚举常量。
关于java - 尝试打印枚举以类似于一副纸牌,但无法仅打印对象描述,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20502904/