2

大家好

我想要做的是调用“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;
            }

    }
4

2 回答 2

5
int [] deck = {}

这将创建一个 size 数组0
你不能在里面放任何东西。

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

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

于 2012-05-30T02:59:41.163 回答
2

当然有错误,数组初始大小为 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();

    }
于 2012-05-30T03:05:44.203 回答