C#通过for循环插入数组值

时间:2012-05-30 02:53:33

标签: c#

大家好>

我要做的是调用“FillDeck”方法用52个数组元素填充“deck []”。 for循环用于添加元素 - 出于测试目的,它只是添加for循环中的y + x值。 我所做的是使用变量“placement”来指示我的索引位置然后递增放置变量,因此对于每个循环迭代,索引都会增加,从而为该特定索引添加一个数组元素。但是,我得到了IndexOutOfRangeException,这是我想弄清楚的。

要注意:我不能自动使用数组的预定值,我必须调用一个方法,其目的是将值添加到数组中。因为它是一个卡片组,有一个嵌套的for循环来确定等级/套装将是一个很好的方法来解决这个问题。

谢谢=)

    static void Main(string[] args)
    {
        int [] deck = {};
        FillDeck(deck); // Error Here
    }
    public static void FillDeck(int[] deck)
    {
        int placement = 0;
        // 0 = Ace , 12 = King : 0 = Hearts, 1 = Diamonds, 2 = Clubs, 3 = Spades
        for (int x = 0; x < 13; x++)
            for (int y = 0; x < 4; ++y)
            {
                deck[placement] = x + y;// Error here
                ++placement;
            }

    }

2 个答案:

答案 0 :(得分:4)

int [] deck = {}

这将创建一个大小为0的数组 你不能放任何东西。

您需要编写new int[52](或其他适当的数字)来创建一个可以实际保存内容的数组。

或者,您可以创建List<T>,通过调用Add()方法可以扩展到任何(合理)大小。

答案 1 :(得分:2)

当然有错误,数组inited size为0表示没有可以存储的元素。 希望以下代码可以帮助您:

    public static int[] FillDeck()
    {
        var deck = new List<int>();
        // 0 = Ace , 12 = King : 0 = Hearts, 1 = Diamonds, 2 = Clubs, 3 = Spades
        for (int x = 0; x < 13; x++)
            for (int y = 0; x < 4; ++y)
            {
                deck.Add(x + y);
            }

        return deck.ToArray();

    }