2013-09-12 5 views
5

В классе нам пришлось написать небольшой код с помощью Dot Product, чтобы найти сумму двух массивов (array a и array b). Я написал свой код, однако, когда я его запускаю, он не дает мне ответа. Мой профессор сказал, что моя петля ошибалась, но я не думаю, что это так. Является ли часть, которая говорит, что i<a.length не разрешен в параметре for loop? Потому что, даже если я установил его на n, он все равно не дает мне сумму.Точечный продукт с массивами

Вот мой код:

public class arrayExample { 
    public static void main (String [] args) { 

     int[] a = {1,2,2,1}; 
     int[] b = {1,2,2,1}; 
     int n = a.length; 

     int sum = 0; 
     for (int i = 0; i < a.length; i++) { 
      sum += a[n] * b[n];  
     } 

     System.out.println(sum); 
    } 
} 
+0
+1

Что он выводит? Чем он отличается от ожидаемого результата? –

+0

Что такое 'n'? Это даже компилируется? –

ответ

23

n не управляющая переменная цикла, это a.length, который является из индекса границ. Вы, вероятно, имел в виду

sum += a[i] * b[i]; 

И, хотя это не имеет значения напрямую, вы вероятно означает ваше for -loop быть

for (int i = 0; i < n; i++) 

(я бы предположить, что причина у вас есть n в первом место.)

+15

не все мы были там. –

+0

@arshajii Благодарим вас за помощь. Я изменил строку на сумму + = a [i] * b [i], и она работает. :) –

+1

@SophiaAli Glad Я мог бы помочь. Не забудьте [принять ответ] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235). – arshajii

0
public class arrayExample 
{ 
    public static void main (String [] args) 
    { 

    int[] a = {1,2,2,1}; 
    int[] b = {1,2,2,1}; 
    int n = a.length; 

    int sum = 0; 
    for (int i = 0; i < n; i++) 
    { 
     sum += a[i] * b[i];  
    } 

    System.out.println(sum); 
    } 
} 
Смежные вопросы