,所以我已经四处寻找了一段时间,以尝试找到解决方案。我一直在尝试制作纸牌游戏,并陷入了我创建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
很有用,可以避免重新分离并不要浪费空间。
是的,是的,在通过索引访问之前,您应该手动将元素添加到列表中。