Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
创建一组简单的卡片C#_C#_Arrays_Loops - Fatal编程技术网

创建一组简单的卡片C#

创建一组简单的卡片C#,c#,arrays,loops,C#,Arrays,Loops,我正在尝试制作一副由52张牌和4套套装组成的牌组:黑桃牌、红桃牌、梅花牌和钻石牌。我试图在我的Deck类中创建这个for循环,但似乎遇到了一些关于如何让程序执行我想要的操作的问题。我在想,也许我可以像作业中暗示的那样做4个for循环,但是否可以使用if/else if在甲板中创建4套西装 class Deck { private Card[] cards; public Deck() { cards = new Card[52]; int

我正在尝试制作一副由52张牌和4套套装组成的牌组:黑桃牌、红桃牌、梅花牌和钻石牌。我试图在我的Deck类中创建这个for循环,但似乎遇到了一些关于如何让程序执行我想要的操作的问题。我在想,也许我可以像作业中暗示的那样做4个for循环,但是否可以使用if/else if在甲板中创建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");
                }
            }
        }

    }
类甲板
{
私人卡[]卡;
公共甲板()
{
卡片=新卡片[52];
整数检查=0;
对于(int-suiteval=1;suiteval<4;suiteval++)
{
对于(int rankVal=1;rankVal<14;rankVal++)
{
if(suitVal==1)
{
卡片[支票]=新卡片(兰克瓦尔,“黑桃”);
}
else if(suitVal==2)
{
卡[支票]=新卡(兰克瓦尔,“红心”);
}
else if(suitVal==3)
{
卡[支票]=新卡(兰克瓦尔,“俱乐部”);
}
else if(suitVal==4)
{
卡[支票]=新卡(兰克瓦尔,“钻石”);
}
}
}
}
是的,这是可能的。 共有13张牌和4套西服。其想法是,对于每套西服,您创建13张牌,其中包含所述西服的数量。伪代码与您已经获得的基本相同:

for each of the four suits
   loop 13 times for said suit
以下是您的代码的问题:

1-您的
check
变量从不递增,因此您总是覆盖位置0上的卡;它应该在每次插入卡后递增(内环)

2-您的outter循环仅运行3次(i=1、i=2、i=3),共有4套套装

如果您需要更多帮助,请告诉我。

是的,这是可能的。 共有13张牌和4套西服。其想法是,对于每套西服,您创建13张牌,其中包含所述西服的数量。伪代码与您已经获得的基本相同:

for each of the four suits
   loop 13 times for said suit
以下是您的代码的问题:

1-您的
check
变量从不递增,因此您总是覆盖位置0上的卡;它应该在每次插入卡后递增(内环)

2-您的outter循环仅运行3次(i=1、i=2、i=3),共有4套套装


如果您需要更多帮助,请告诉我。

您可以通过以下方式完成:

class Deck
{
    private Card[] cards;

    public Deck()
    {
        cards =
            new [] { "Spades", "Hearts", "Clubs", "Diamonds", }
                .SelectMany(
                    suit => Enumerable.Range(1, 13),
                    (suit, rank) => new Card(rank, suit))
                .ToArray();
    }
}
或:

或:

类甲板
{
私人卡[]卡;
公共甲板()
{
卡片=新卡片[52];
var指数=0;
foreach(新[]{“黑桃”、“红桃”、“梅花”、“钻石”}中的var套装)
{

对于(var rank=1;rank,您可以通过以下方式进行:

class Deck
{
    private Card[] cards;

    public Deck()
    {
        cards =
            new [] { "Spades", "Hearts", "Clubs", "Diamonds", }
                .SelectMany(
                    suit => Enumerable.Range(1, 13),
                    (suit, rank) => new Card(rank, suit))
                .ToArray();
    }
}
或:

或:

类甲板
{
私人卡[]卡;
公共甲板()
{
卡片=新卡片[52];
var指数=0;
foreach(新[]{“黑桃”、“红桃”、“梅花”、“钻石”}中的var套装)
{

对于(var rank=1;rank这看起来像是学校分配的。在我大学的时候…这看起来像是学校分配的。在我大学的时候…谢谢你的回答,我最后做了4个for循环,因为我很沮丧。但是,是的,现在你已经指出了我的错误,我发现可以用if和else if语句来做。请给这个人竖起大拇指或者接受他的回答,他会给你你所需要的一切,这会按照他指出的方式进行。冷静点,@Jannik。我还没有声誉去支持投票答案。感谢你的回答,我最终做了4个for循环,因为我很沮丧。但是,现在你指出了我的错误,我认为这是可能的用if和else-if语句。请给这个人竖起大拇指,或者接受他的回答,他正在给你你所需要的一切,这将按照他指出的方式进行。冷静,@Jannik。我还没有声誉去支持投票答案。