2014-02-11 39 views
-7

任何人都可以幫助我的數組乘法的代碼?在Java中的數組乘法

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

+1

你有什麼試過?提示:你將需要一個循環,並在該循環中運行總和 – turbo

+6

'任何人都可以幫助我的代碼' - 你的意思是__write你的代碼? – devnull

+0

我剛剛意識到我仔細地重新格式化了這個問題,然後投票結束...... –

回答

1

我想你想在同一時間向前和向後步進,例如,

sum = sum + (weighting[i] * (int)iarray[iarray.length - i - 1]); 

只有一個循環(這將假設兩個數組的長度相同)。

+0

a1 [1] * a2 [9] + a1 [1] * a2 [8] + a1 [1] * a2 [7] ... + a1 [2 ] * a2 [1];看起來像是將每個元素與每個元素相加,並且總和爲 – user1121883

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數組是從零開始的索引,從零到8迭代。

+0

但是,這可以像a1 [1] * a2 [9] + a1 [1] * a2 [8] + a1 [1] * a2 [7 ] ... + a1 [2] * a2 [1]等 –

+0

@VineethVarma:不,它的工作方式與您的預期相同,但兩者在邏輯上都是一樣的 –

+0

My arr1 - {5,3,0,0,4, 0,8,5,6,1,6} My arr2 - {10,1,3,5,7,9,11,13,15,17,19} 現在我想(3x1)+(0x3) +(0x5)+(4×7)+(0x9)+(8×11)+(5×13)+(6×15)+(1×17)+(6×19)。 (1x3)+(1x0)+(1x0)+(1x4)+(1x0)+(1x8)... +(1x6)+(3x3)+(3x0)+(3x0)+(3x4) + ... 我的代碼是 對(INT I = 1; I <= 10; i ++在) { 對(INT J = 9; J>時= 0; j--) { 總和=總和+ (arr2 [i] * arr1 [j]); } } –

0

我認爲(如果我理解正確的),你尋找的東西是這樣的:

int sum = 0; 
for(int i = 0, j = arr2.length; i <= j; i++, j--){ 
sum += arr1[i] * arr2[j]; 
} 

是考慮到arr1.length相同arr2.length

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)); 
    } 

}