多维数组中所有数字的总和
本文关键字:数字 数组 | 更新日期: 2023-09-27 18:26:09
我目前正在学习C#,在多维数组方面遇到了一些问题。
我似乎不知道如何求出数组中所有元素的和。E.g
int[,] array = { { 52, 76, 65 }, { 98, 87, 93 }, { 43, 77, 62 }, { 72, 73, 74 } };
所以总和应该是:
52+76+65+98+。。。
我试过使用for循环,但它只给了我维度1中每个数组的和。E.g
private int[,] array = { { 52, 76, 33}, { 98, 87, 93 }, { 43, 77, 62 }, { 72, 73, 74 } };
public void ArraySum()
{
double sum;
for (int i = 0; i < array.GetLength(0); i++)
{
sum = 0;
for (int j = 0; j < array.GetLength(1); j++)
sum += array[i, j];
Console.WriteLine("The sums are for the array {0} is {1}: ", i, sum);
}
}
有什么想法吗?
另一个答案指出了代码的错误。以下是使用LINQ的循环的简短替代方案:
int[,] array = { { 52, 76, 65 }, { 98, 87, 93 }, { 43, 77, 62 }, { 72, 73, 74 } };
int sum = array.Cast<int>().Sum();
Cast
用于将多维数组转换为IEnumerable<int>
,然后可以使用Sum
扩展方法。
因为你只是在学习和玩耍,所以你可以使用List<int<int>>
来存储你的值,而不是像这样的二维数组:
var array = new List<List<int>>
{
new List<int> {52, 76, 65},
new List<int> {98, 87, 93},
new List<int> {43, 77, 62},
new List<int> {72, 73, 74}
};
然后你可以很容易地使用LINQ来获得你的金额:
var sum = array.SelectMany(x => x).Sum();
如果你还没有听说过,你可以在这里了解更多关于LINQ的信息。
基本上,SelectMany()
将多个列表扁平化为一个列表,然后Sum()
将它们全部相加。
只需将线路sum = 0;
移出第一个循环:
private int[,] array = { { 52, 76, 33}, { 98, 87, 93 }, { 43, 77, 62 }, { 72, 73, 74 } };
public void ArraySum()
{
int sum = 0;
for (int i = 0; i < array.GetLength(0); i++)
{
for (int j = 0; j < array.GetLength(1); j++)
sum += array[i, j];
}
Console.WriteLine("The sum for the whole array is {0}: ", sum);
}
在您的代码中,每个子阵列的sum
重置为0
。
编辑
由于数组包含int
值,请考虑将sum
变量声明为int
,而不是double
。
如果你想要的只是整个数组的总和,那么
private static int[,] array = { { 52, 76, 33}, { 98, 87, 93 }, { 43, 77, 62 }, { 72, 73, 74 } };
public static void Main()
{
double sum = 0;
for (int i = 0; i < array.GetLength(0); i++)
{
for (int j = 0; j < array.GetLength(1); j++)
sum += array[i, j];
}
Console.WriteLine("The sum for the array is {0}: ", sum);
}