我正在努力实现一个 toString 方法来输出一副纸牌(ARRAY)。
我有一个卡片班
public class Card {
private Rank rank;
private Suit suit;
public Card(Rank theRank, Suit theSuit) {
rank = theRank;
suit = theSuit;
}
public Rank getRank() {
return rank;
}
public Suit getSuit() {
return suit;
}
public String toString() {
return (rank + " of " + suit);
}
}
排名实现为枚举
public enum Rank {
ACE(1), TWO(2), THREE(3), FOUR(4), FIVE(5), SIX(6), SEVEN(7), EIGHT(8), NINE(
9), TEN(10), JACK(10), QUEEN(10), KING(10);
private final int rankValue;
private Rank(int value) {
rankValue = value;
}
public int getRankValue() {
return rankValue;
}
}
套装作为枚举实现
public enum Suit {
HEARTS, CLUBS, DIAMONDS, SPADES;
}
甲板课
public class Deck {
private static Card[] cards = new Card[52];
public Deck() {
int i = 0;
for (Suit s : Suit.values()) {
for (Rank r : Rank.values()) {
cards[i++] = new Card(r, s);
}
}
}
public Card[] getCards() {
return cards;
}
// toString METHOD NOT WORKING
public String toString() {
String s = ("The Complete Deck consists of: \n" + getCards());
return s;
}
}
还有一个 DeckDriver 类(包括 main 方法)
public class TestDeck {
public static void main(String[] args) {
System.out.println("*** DISPLAY A FULL DECK OF CARDS ***\n");
Deck theDeck = new Deck();
Card[] cards = theDeck.getCards();
for (Card c : theDeck.getCards()) {
System.out.println(c);
}
// or
System.out.println("");
System.out.println(theDeck.toString());
}
}
第一个 println 语句根据需要打印出来,但我需要在 Deck 类中实现一个 toString() 方法。这是我遇到困难的地方。
从上面的代码(不包括第一个 println 语句的输出),我得到的输出是:
完整套牌包括:[LCard;@2c6f7ce9
任何能让我理解和纠正这个问题的建议都会很棒。
谢谢。
* 编辑 *
所以我尝试了以下方法:
public String toString() {
String s = ("The Complete Deck consists of: \n" + Arrays
.toString(cards));
return s;
}
& 它输出数组,但在一个单一的、宽的、长的行中。有没有办法在新行上打印每个数组元素?
谢谢。