我正在尝试用4件套装制作一副52张牌:黑桃,心形,棍棒和钻石.我试图在我的Deck类中创建这个for循环,但似乎遇到了一些关于实际让程序按我想要做的问题.我想也许我可以做4个for循环作为分配暗示,但是可以使用if/else-ifs在套牌中创建4套装吗?
class Deck
{
private Card[] cards;
public Deck()
{
cards = new Card[52];
int check = 0;
for (int suitVal = 1; suitVal < 4; suitVal++)
{
for (int rankVal = 1; rankVal < 14; rankVal++)
{
if(suitVal == 1)
{
cards[check] = new Card(rankVal, "Spades");
}
else if (suitVal == 2)
{
cards[check] = new Card(rankVal, "Hearts");
}
else if (suitVal == 3)
{
cards[check] = new Card(rankVal, "Clubs");
}
else if (suitVal == 4)
{
cards[check] = new Card(rankVal, "Diamonds");
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
对的,这是可能的.共有13张牌和4件套装.这个想法是,对于每件套装,你创造了13张带有所述套装的卡片.伪代码几乎就是你已经拥有的:
for each of the four suits
loop 13 times for said suit
Run Code Online (Sandbox Code Playgroud)
以下是您的代码的问题:
1-您的check变量永远不会增加,因此您始终会覆盖位置0上的卡; 插入每张卡后应该增加(内循环)
2-您的外部循环仅运行3次(i = 1,i = 2,i = 3),并且有4个套装.
如果您需要更多帮助,请告诉我.