在堆栈中打印对象[Java]

时间:2014-03-08 17:16:55

标签: java arrays stack

因此,该项目是制作一副纸牌,创建洗牌和处理卡片并进行比较的方法。

甚至没有那么远,我在显示堆栈内容时遇到问题。

我收到输出randomdeck.Card@10ed7f5c,但每张卡都有不同的地址。

我进行了大小检查,堆栈中有52个对象,这意味着我填充它并且它实际存在。

查看我的Card构造函数我知道我实际上并没有用cSuit / cRank String数组填充它。我的原始代码有它所以我用整数填充它然后有一个方法来读取那些整数并将这些整数放入显示String的String数组中。

但我不得不部分废弃它,因为它只是一个数组而不是堆栈。

如果有一种方法可以直接将String数组传递到Card中,那么将它推入Deck我可以将其弹出并立即看到内容很棒。但是我担心这是不可能的,而且我没有掌握Stacks / Queues的基本信息。

我希望我保持旧代码完整无缺,以显示我之前所做的事情,但我认为此时并不重要。

这是我目前的代码。

package randomdeck;
//import java.util.Arrays;
import java.util.Stack;

public class Card 
{
int Suit;
int Rank;


public Card(int Rank, int Suit)
{
    this.Suit=Suit;
    this.Rank=Rank;
}


public  String[] cSuit = new String[4];
{
    cSuit[0]="Hearts";
    cSuit[1]="Spades";
    cSuit[2]="Diamonds";
    cSuit[3]="Clubs";
}

public  String[] cRank = new String[13];
{
    cRank[0]="Ace";
    cRank[1]="2";
    cRank[2]="3";
    cRank[3]="4";
    cRank[4]="5";
    cRank[5]="6";
    cRank[6]="7";
    cRank[7]="8";
    cRank[8]="9";
    cRank[9]="10";
    cRank[10]="Jack";
    cRank[11]="Queen";
    cRank[12]="King";
}

void displayCard()
{
    //System.out.println(cRank + " Of " + cSuit);
    System.out.println(cRank[Rank] + " of " + cSuit[Suit]);
}


}

这是Deck类

package randomdeck;
//import java.util.Arrays;
import java.util.Stack;

public class Deck 
{
int cardNum=0;
//static int DeckSize=52;
Stack<Card> Deck = new Stack<Card>();


public Deck()
{

   for(int rank=0; rank<13; rank++)
   {
       for(int suit=0; suit<4; suit++)
       {
           Deck.push(new Card(rank,suit));
           System.out.println(Deck.peek());
           //System.out.println(Deck.size());
           //Deck[cardNum] = new Card(rank,suit);
           //cardNum++;
       }
   }
}


public void Peek()
{
   System.out.println(Deck.peek());

}

public void Size()
{
   System.out.println(Deck.size());
}
}

这是最后一节课

package randomdeck;
//import java.util.Arrays;
import java.util.Stack;

public class RandomDeck {

public static void main(String[] args) 
{
    Deck testDeck= new Deck();
    testDeck.Size();

}

}

1 个答案:

答案 0 :(得分:2)

我认为您想要toString()类添加Card方法,就像这样,

public String toString() {
  return cRank[Rank] + " of " + cSuit[Suit];
}

此外,我认为您应该分别将RankSuit重命名为ranksuit

最后,一个更惯用的String数组初始化将是

public String[] cSuit = new String[] { "Hearts",
    "Spades", "Diamonds", "Clubs" };

public String[] cRank = new String[] { "Ace", "2",
    "3", "4", "5", "6", "7", "8", "9", "10", "Jack",
    "Queen", "King" };