将一个数组的每个元素乘以另一个数组的所有元素

本文关键字:数组 元素 另一个 一个 | 更新日期: 2023-09-27 18:05:57

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

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

我需要将"firststarray"的第一个元素乘以"secondArray"中的每个元素。然后用"firststarray"中的第二个元素乘以"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],则会出现超出范围的异常。如果你能帮忙,我将不胜感激。

将一个数组的每个元素乘以另一个数组的所有元素

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

var query = from x in firstArray
            from y in secondArray
            select x * y;
int[] thirdArray = query.ToArray();

我相信这将达到你所寻找的:

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

这应该能解决你的问题:

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

哎呀,您甚至可以不使用大括号来表示作用域,因为每次迭代的作用域中只有一个操作:

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;

一行完成,使用LINQ:

var allMultiples = firstArray.SelectMany(a => secondArray.Select(b => a * b));