大家好>
我要做的是调用“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;
}
}
答案 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();
}