任何人都可以帮我解决数组乘法的问题吗?
arr1 = 1,2,3,4,5,6,7,8,9.
arr2 = 1,2,3,4,5,6,7,8,9.
我想要arr1[0]*arr2[8], arr1[1]*arr2[7]
等等..
和他们的总和。
即sum = (arr1[0]*arr2[8]) + (arr1[1]*arr2[7])
......
请帮忙
for (int i = 1; i <= 10; i++)
{
for(int j=9; j >=0; j--)
{
sum = sum + (weighting[i] * (int)iarray[j]);
}
}
我写了上面的代码。但这类似于a1[1]*a2[9]+a1[1]*a2[8]+a1[1]*a2[7]...+a1[2]*a2[1]
等等。
答案 0 :(得分:2)
尝试以下
int total = 0;
for (int i = 0;i < arr1.length;i++) {
for(int j = arr2.length-1; j >= 0;j--) {
total += arr1[i]*arr2[j];
}
}
Java Arrays是零索引,从零到8次迭代。
答案 1 :(得分:1)
我认为你想在同一时间前进和后退,例如。
sum = sum + (weighting[i] * (int)iarray[iarray.length - i - 1]);
只有一个循环(假设两个数组的长度相同)。
答案 2 :(得分:0)
我认为(如果我理解正确的话)你正在寻找这样的东西:
int sum = 0;
for(int i = 0, j = arr2.length; i <= j; i++, j--){
sum += arr1[i] * arr2[j];
}
考虑到arr1.length
与arr2.length
答案 3 :(得分:0)
你应该尝试这样做,它简单而实用,希望它有所帮助:
import java.util.Arrays;
public class arraySumMult {
private static int[] a = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
private static int[] b = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
private static int[] c = add(a, b);
private static int[] d = multiply(a, b);
private static int[] add(int[] a, int[] b) {
int[] c = new int[a.length];
for (int i = 0; i < c.length; i++) {
c[i] = a[i] + b[c.length-1-i];
}
return c;
}
private static int[] multiply(int[] a, int[] b) {
int[] d = new int[a.length];
for (int i = 0; i < d.length; i++) {
d[i] = a[i] * b[d.length-1-i];
}
return d;
}
public static void main (String[] args) {
System.out.println(Arrays.toString(c));
System.out.println(Arrays.toString(d));
}
}