在C#中查找2D数组中的值的总和

时间:2015-09-16 23:42:29

标签: c# multidimensional-array methods

尝试构建一个方法,该方法将查找2D数组中所有值的总和。我对编程很陌生,无法找到一个很好的起点,试图弄清楚它是如何完成的。这是我到目前为止(原谅我,我通常是一个英国/历史家伙,逻辑不是我的强项......)

class Program
{
    static void Main(string[] args)
    {
        int[,] myArray = new int[5,6];
        FillArray(myArray);
        LargestValue(myArray);

    }
    //Fills the array with random values 1-15
    public static void FillArray(int[,] array)
    {
        Random rnd = new Random();
        int[,] tempArray = new int[,] { };
        for (int i = 0; i < tempArray.GetLength(0); i++)
        {
            for (int j = 0; j < tempArray.GetLength(1); j++)
            {
                tempArray[i, j] = rnd.Next(1, 16);
            }
        }
    }
    //finds the largest value in the array (using an IEnumerator someone 
    //showed me, but I'm a little fuzzy on how it works...)
    public static void LargestValue(int[,] array)
    {
        FillArray(array);
        IEnumerable<int> allValues = array.Cast<int>();
        int max = allValues.Max();
        Console.WriteLine("Max value: " + max);
    }
    //finds the sum of all values
    public int SumArray(int[,] array)
    {
        FillArray(array);
    }
}

我想我可以尝试找到每行或每列的总和,然后用for循环添加它们?添加它们并返回一个int?如果有人能够提供任何见解,那将非常感谢,谢谢!

2 个答案:

答案 0 :(得分:4)

首先,您不需要在每个方法的开头调用FillArray,您已经在main方法中填充了数组,您将填充的数组传递给其他方法。

类似于用于填充数组的循环是最容易理解的:

//finds the sum of all values
public int SumArray(int[,] array)
{
    int total = 0;
    // Iterate through the first dimension of the array
    for (int i = 0; i < array.GetLength(0); i++)
    {
        // Iterate through the second dimension
        for (int j = 0; j < array.GetLength(1); j++)
        {
            // Add the value at this location to the total
            // (+= is shorthand for saying total = total + <something>)
            total += array[i, j];
        }
    }
    return total;
}

答案 1 :(得分:1)

如果您知道长度很容易,则对数组求和 作为奖励代码包括获得最高的valeu。 您可以轻松扩展它以获得其他类型的统计代码。 我认为Xlength和Ylength也是整数,并且你知道。 您也可以用代码中的数字替换它们。

int total = 0;
int max=0;
int t=0;  // temp valeu
For (int x=0;x<Xlength;x++)
{
 for (int y=0;y<Ylength;y++)
 {
   t = yourArray[x,y]; 
   total =total +t;
   if(t>max){max=t;}   // an if on a single line
 }
}

这是一个关于如何检索未知数组长度的MSDN示例的链接。 当你在c#开始时有一个很好的网站 谷歌“.net perls”