在C#中乘以2D数组

时间:2015-03-02 22:15:56

标签: c# multidimensional-array

我对C#很陌生,我需要一些帮助,从2d数组乘以两个数字。我有这段代码:

  

int [,] myArray = {{50,74},{9,88},{75,53},{46,98},{100,99}};

我需要将每对相乘,例如50 * 0.4和74 * 0.6,然后将每个答案加在一起得到我的总和与其他人相同。非常感谢任何帮助,谢谢

2 个答案:

答案 0 :(得分:1)

简单如下:

double[] result = new double[myArray.GetLength(0)];
for(int i = 0; i < myArray.GetLength(0); ++i)
    result[i] = myArray[i, 0] * 0.4 + myArray[i, 1] * 0.6;
// result now contains what you need

多维“2D”数组的第一个索引是指行位置(每个组成数组),第二个索引是指列位置(每个组成数组中的位置)。

GetLength(0)表示获取多维数组的第0维长度。在这种情况下,它是5,因为您的数组中有五行。另一方面,GetLength(1)将返回2,因为有2列。

答案 1 :(得分:1)

首先,要完成所有对,我们需要知道你的数组有多长。为此,我们可以使用myArray.GetLength(0)。这将返回第一个维度中的元素总数。仅使用Length会返回个元素数,这不是我们想要的。

一旦我们有了这个,我们就可以使用经典的for循环遍历所有对。

对于每一对,我们可以将第一个元素myArray[i,0]乘以0.4d,将另一个元素myArray[i,1]乘以0.6d。这里的d表示double数据类型。 int在这里不会这样做,因为我们有一个带小数的数字。

我们只是将这两个操作的结果相加,并将其作为新条目添加到我们的最终列表中。

以下是代码:

int[,] myArray = { { 50, 74 }, { 9, 88 }, { 75, 53 }, { 46, 98 }, { 100, 99 } };

var result = new List<double>();
for (int i = 0; i < myArray.GetLength(0); i++)
{
    result.Add(myArray[i,0] * 0.4d + myArray[i,1] * 0.6d);
}

如果你的最终列表明确需要是一个数组,你可以改为使用它:

int arrayLength = myArray.GetLength(0);
double[] result = new double[arrayLength];
for (int i = 0; i < arrayLength; i++)
{
    result[i] = myArray[i, 0] * 0.4d + myArray[i, 1] * 0.6d;
}

它几乎是一回事,但我们首先需要定义一个具有我们集合大小的数组。