2

我很难将两个数组中的元素相乘。

    int[] firstArray = { 1,2,3,4 };
    int[] secondArray = { 10,20,30,40 };

我需要将“firstArray”的第一个元素乘以“secondArray”中的每个元素。然后将“firstArray”的第二个元素乘以“secondArray”中的每个元素,依此类推,直到我将第一个数组中的所有元素乘以第二个数组中的每个元素。

到目前为止,我已经弄清楚如何通过构建第三个数组来获得第一个元素来做到这一点

    int[] thirdArray = [4]

    for (int counter = 0; counter < thirdArray.Length; counter ++)
    thirdArray[counter] = firstArray[counter] * secondArray[counter];
    console.WriteLine(thirdArray[counter]);

这只是获取第一个数组的元素并直接乘以第二个元素。我应该有 16 个 int 结果,但如果我将 thirdArray 更改为 [16],则会出现超出范围的异常。如果您能提供帮助,将不胜感激。

4

5 回答 5

3

我相信这将实现您正在寻找的东西:

int[] thirdArray = new int[16];

for (int i = 0; i < 4; i++)
    for (int j = 0; j < 4; j++)
        thirdArray[i * 4 + j] = firstArray[i] * secondArray[j];
于 2013-03-27T00:01:13.823 回答
2

作为一种替代方法,您可以为此使用LINQ :

var query = from x in firstArray
            from y in secondArray
            select x * y;

int[] thirdArray = query.ToArray();
于 2013-03-27T00:00:27.970 回答
1

这应该可以解决您的问题:

int[] firstArray = { 1,2,3,4 };
  int[] secondArray = { 10,20,30,40 };
    int[] thirdArray = new int[firstArray.Length*secondArray.Length];
    for (int i = 0; i < firstArray.Length; i++)
    for (int j = 0; j < secondArray.Length; j++)
    {
        thirdArray[i*firstArray.Length + j] = firstArray[i] * secondArray[j];
        Console.WriteLine(thirdArray[i*firstArray.Length + j]);
    }
于 2013-03-27T00:02:20.763 回答
0

使用 LINQ 在一行中完成:

var allMultiples = firstArray.SelectMany(a => secondArray.Select(b => a * b));
于 2013-03-28T03:34:42.543 回答
0

哎呀,您甚至可以取消大括号来表示范围,因为每次迭代的范围内只有一个操作:

int[] firstArray = { 1, 2, 3, 4 };
int[] secondArray = { 10, 20, 30, 40 };
for (int i = 0; i < firstArray.Length; i++ )
    foreach (int second in secondArray)
        firstArray[i] *= second;
于 2013-03-27T00:03:34.120 回答