试图建立一个方法,将找到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循环加起来?把它们加起来,返回一个整型?如果有人能提供任何见解,将不胜感激,谢谢!
首先,你不需要在每个方法的开始调用FillArray,你已经在主方法中填充了数组,你将一个填充的数组传递给其他方法。
与填充数组类似的循环是最容易理解的:
//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;
}
如果知道数组的长度,就很容易对数组求和作为奖励代码,包括获得最高价值。您可以很容易地扩展它以获得其他类型的统计代码。我假设下面的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#时,有一个很好的网站Google ".net perls"