Java中的数组乘法

时间:2014-02-11 16:56:53

标签: java arrays

任何人都可以帮我解决数组乘法的问题吗?

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]等等。

4 个答案:

答案 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.lengtharr2.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));
    }

}