java方法使用循环将元素与数组相乘

定义一个名为weightedSum()的Java方法,它接受两个整数数组作为参数。 该方法使用循环将两个数组的相应元素相乘(即,将每个数组的第一个参数相乘,然后将每个数组的第二个元素相乘,依此类推)并返回这些数组的总和(这也是一个整数)。 您可以假设两个数组的长度相等。

public int weightedSum(int [] a ,int [] b) { int value; int sum ; for (int i = 0 ; i < a.length ; i++) { value = a[i] * b [i]; value = value +value ; } return value; 

我无法为我的作业编写此方法。 我支持它接受数组,但是我在编写循环本身时遇到了麻烦,因此它将数组的每个单独元素与相反数组中的对应元素相乘,因此pos [1] * pos [1]然后添加两个值与pos [2] + pos [2]合并并得到所有值的总和

以下是代码中所需的更改。 基本上,在计算两个数组中相应元素的乘积后,您从未更新变量和。 此外,您可能希望使用long类型来存储sum和product的结果,因为如果数组中的元素足够大,则int值可能会溢出。

 public long weightedSum(int [] a ,int [] b) { long value = 0; long sum = 0 ; for (int i = 0 ; i < a.length ; i++) { value = a[i] * b [i]; sum = sum +value ; } return sum; } 

尝试这个:

 public long dotProduct(int [] a, int [] b) { if (a == null) throw new IllegalArgumentException("a array cannot be null"); if (b == null) throw new IllegalArgumentException("b array cannot be null"); if (a.length != b.length) throw new IllegalArgumentException("arrays must have equal lengths"); long sum = 0L; for (int i = 0; i < a.length; i++) { sum += a[i]*b[i]; } return sum; } 

大多数代码看起来都是正确的,但是循环中的第二行不应该更改值变量,sum变量应该使用值更新。 像sum + = value这样的东西。 然后返还总和。

改为:

 value += a[i] * b [i]; // value = value + value; 

在使用之前将value初始化为0 。 同时删除sum变量。