繁体   English   中英

打印堆栈中的对象[Java]

[英]Printing Objects in Stack [Java]

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

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

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

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

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

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

如果有一种方法可以直接将String数组传递到Card中,那么将其推入Deck的方式就可以将其弹出并立即看到非常棒的内容。 但是我担心这是不可能的,而且我无法掌握有关堆栈/队列的一些基本知识。

我希望我的旧代码完全完整无缺,以显示以前的操作,但现在我认为这并不重要。

这是我当前的代码。

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]);
}


}

这是甲板课

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();

}

}

我想您想像这样向Card类添加toString()方法,

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" };

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM