我很难将两个数组中的元素相乘。
int[] firstArray = { 1,2,3,4 };
int[] secondArray = { 10,20,30,40 };
我需要将“firstArray”的第一个元素乘以“secondArray”中的每个元素。然后通过“secondArray”中的每个元素获取“firstArray”的第二个元素,依此类推,直到我将第一个数组中的所有元素乘以第二个数组中的每个元素。
到目前为止,我已经找到了如何通过构建第三个数组来获得第一个元素
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]则会超出范围异常。 如果你能提供帮助,将不胜感激。
答案 0 :(得分: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];
答案 1 :(得分:1)
作为替代方法,您可以使用LINQ:
var query = from x in firstArray
from y in secondArray
select x * y;
int[] thirdArray = query.ToArray();
答案 2 :(得分: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]);
}
答案 3 :(得分: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;
答案 4 :(得分:-1)
使用LINQ:
完成一行var allMultiples = firstArray.SelectMany(a => secondArray.Select(b => a * b));