循环遍历一个大数组并将值加在一起 C#
Posted
技术标签:
【中文标题】循环遍历一个大数组并将值加在一起 C#【英文标题】:Looping through a large array and adding the values together C# 【发布时间】:2021-06-18 00:12:12 【问题描述】:我正在尝试遍历一个包含 180 个元素的数组,并将前 60 个元素加在一起并将其存储在一个列表中。然后将接下来的 60 个元素加在一起并将它们存储在列表中,并对最后的 60 个重复此操作。到目前为止,我的代码只会添加前 60 个元素并将它们存储在列表中。问题似乎是 else if 语句中的“i % 60 == 0”,但我不知道为什么
Random r = new Random();
int[] arr = new int[180];
List<int> MyList = new List<int>();
int[] array2 = new int[2];
//intialize random numbers in 60 length array
for (int i = 0; i < arr.Length; i++)
arr[i] = r.Next(1, 10);
int score = 0;
//looping through arr
for (int i = 0; i < arr.Length; i++)
if (i % 60 != 0 || i == 0 )
score = score + arr[i];
i++;
else if (i % 60 == 0 && i != 0)
//adding the values to a list
MyList.Add(score);
//resetting score after score is added to the list
score = 0;
// converting list to my second array
array2 = MyList.ToArray();
//printing values in array
for (int i = 0; i < array2.Length; i++)
Console.WriteLine(array2[i]);
【问题讨论】:
【参考方案1】:你原来的循环和条件有几个问题,实际上需要:
int score = 0;
for (int i = 0; i < arr.Length; i++)
score = score + arr[i];
if ((i + 1) % 60 == 0)
MyList.Add(score);
score = 0;
但我强烈建议您使用更简单的 LINQ 方法(而不是手动执行所有操作):
var array2 = new[]
arr.Take(60).Sum(),
arr.Skip(60).Take(60).Sum(),
arr.Skip(120).Sum()
;
【讨论】:
以上是关于循环遍历一个大数组并将值加在一起 C#的主要内容,如果未能解决你的问题,请参考以下文章