2015-03-02 136 views
0

我对C#相当陌生,我需要一些帮助将乘以2d数组中的两个数字。我有这样的代码:在C#中乘以二维数组

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

我需要乘以每对,例如50 * 0.4和74 * 0.6,然后从每个答案加起来得到我的总和和其他人的相同。任何帮助将不胜感激,谢谢

回答

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列。

+0

你正在做一个整数乘法,这些数字将被截断。长度也将是10,这将创建一个IndexOutOfBounds异常。 – 2015-03-02 22:33:28

+0

@ Pierre-LucPineault哎呀,很抱歉。固定! – 2015-03-02 22:34:21

1

首先,通过所有对,我们需要知道你的数组有多长。为了达到这个目的,我们可以使用myArray.GetLength(0)。这将返回第一维中元素的总数。仅使用Length将返回总数元素的数量,这不是我们想要的。

一旦我们有了,我们可以通过经典的for循环遍历所有对。

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

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

下面的代码:

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; 
} 

这几乎是同样的事情,但我们首先需要用我们集合的大小来定义一个数组。

+0

'列表'可能会失败,数组应该足够了。 – 2015-03-02 22:31:26

+0

@AlexeiLevenkov公平点,更新了答案。 – 2015-03-02 22:36:05