如何解决范围异常



,所以我已经四处寻找了一段时间,以尝试找到解决方案。我一直在尝试制作纸牌游戏,并陷入了我创建CAD及其属性的部分。我决定以阵列的形式制作它。代码看起来像:

(不确定这些第一个发生了什么)

string[] dogs = System.IO.File.ReadAllLines(@"C:UserscorinDocumentsC# codingdogs.txt");
int individual = totalCards / 2;
Random r = new Random();
int Cards = totalCards / 2;
List<List<int>> playerCards = new List<List<int>>(Cards);
for (int x = 0; x < (Cards-2); x++)
{
    playerCards[0].Add(Int32.Parse(dogs[x]));//Cards
    playerCards[1].Add(r.Next(1, 6));//Drool
    playerCards[2].Add(r.Next(1, 101));//Exercise
    playerCards[3].Add(r.Next(1, 11));//Intelligence
    playerCards[4].Add(r.Next(1, 11));//Friendliness
}

在我运行代码之前,没有提出错误,但是当我尝试该行以外的参数时,该行发生了异常:PlayerCards [0] .ADD(int32.parse(dog dog dogs [x]));我尝试将其删除,下一行发生同样的错误。我不确定我做错了什么,并且试图找到解决方案一段时间。如果有人有任何技巧或答案,那将是很棒的。谢谢

尝试以下:

string[] dogs = System.IO.File.ReadAllLines(@"C:UserscorinDocumentsC# codingdogs.txt");
int individual = totalCards / 2;
Random r = new Random();
int Cards = totalCards / 2;
List<List<int>> playerCards = new List<List<int>>();
//the missing piece
for (int i = 0; i < (Cards ); i++)
{
     playerCards.add(new List<int>()); 
}

for (int x = 0; x < (Cards-2); x++)
{
    playerCards[0].Add(Int32.Parse(dogs[x]));//Cards
    playerCards[1].Add(r.Next(1, 6));//Drool
    playerCards[2].Add(r.Next(1, 101));//Exercise
    playerCards[3].Add(r.Next(1, 11));//Intelligence
    playerCards[4].Add(r.Next(1, 11));//Friendliness
}

除了先前的答案外:new List<List<int>>(Cards)不做您认为的事情。它设置capacity,而不是elementCount(或任何称为)。检查边界时,使用elementCount,而不是capacity。当您有一个很好的了解时,capacity很有用,可以避免重新分离并不要浪费空间。

是的,是的,在通过索引访问之前,您应该手动将元素添加到列表中。

最新更新