将一个数组的每个元素乘以另一个数组的所有元素
本文关键字:数组 元素 另一个 一个 | 更新日期: 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));