循环遍历一个大数组并将值加在一起 ​​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#的主要内容,如果未能解决你的问题,请参考以下文章

Oracle中怎么样把字段相同的值加在一起

access怎么在查询中把来自两个表的值加在一起?

循环遍历数组,并将子JSON转换为observablearray?

回显值并在循环内加在一起以形成总数[重复]

连续循环遍历数组以创建水平股票行情

mongodb查询,如何只查询出某一个字段的值?