2014-02-11 2 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 для you__? – 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

Мой arr1 - {5,3,0,0,4, 0,8,5,6,1,6} Мой arr2 - {10,1,3,5,7,9,11,13,15,17,19} Теперь я хочу (3x1) + (0x3) + (0x5) + (4x7) + (0x9) + (8x11) + (5x13) + (6x15) + (1x17) + (6x19). Этот код дает (1x3) + (1x0) + (1x0) + (1x4) + (1x0) + (1x8) ... + (1x6) + (3x3) + (3x0) + (3x0) + (3x4) + ... Мой код для (INT I = 1, г <= 10; я ++) { для (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)); 
    } 

} 
Смежные вопросы