【问题标题】:Dot product with arrays带数组的点积
【发布时间】:2013-09-12 23:10:58
【问题描述】:

在课堂上,我们必须使用点积编写一个小代码来求两个数组(数组 a 和数组 b)的和。我已经编写了我的代码,但是当我运行它时它并没有给我答案。我的教授说我的循环是错误的,但我认为不是。是否在 for 循环参数中不允许使用 i<a.length 的部分?因为即使我将它设置为 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);
    }
}

【问题讨论】:

  • i &lt; a.length 在循环参数中确实有效。不知道你的导师在说什么。
  • 它输出什么?它与您的预期输出有何不同?
  • n 是什么?这甚至可以编译吗?
  • @JustinL。它没有向我展示任何东西,但是我从下面的答案中意识到我应该是多个 a[i]*b[i] (不是 a[n]*b[n])谢谢 :)
  • @BoristheSpider 程序编译好了,n本来应该代表数组a的长度,但是我把它拿出来了。

标签: java for-loop dot-product


【解决方案1】:

n 不是循环控制变量,它是a.length,它是一个越界索引。你可能是说

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

而且,虽然直接无关紧要,但您可能意味着您的for-loop 是

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

(我想这就是你首先拥有n 的原因。)

【讨论】:

  • 我们不是都去过那里吗?
  • @arshajii 感谢您的帮助。我将行更改为 sum += a[i]*b[i] 并且它可以工作。 :)
  • @SophiaAli 很高兴我能帮上忙。不要忘记accept an answer
【解决方案2】:
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);
   }
}

【讨论】:

    猜你喜欢
    • 2016-07-13
    • 2016-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-16
    相关资源
    最近更新 更多