为什么我的代码不起作用 - 终端上怎么说?

why my code not work -what says on the terminal?

你好,我正在尝试 运行 此代码 >>

public class test {
public static void main(String[] args) {
    double[] p1={2,3,4};
    double[] p2={2,3};
    int maxlentharr;
    if (p1.length > p2.length) {
           maxlentharr = p1.length;
    } else {
           maxlentharr = p2.length;
    }
    double[] Array = new double[maxlentharr];
    for (int i = 0; i < Array.length; i++) {
           Array[i] = 0;
    }

    for (int k = 0; k < p1.length; k++) {
           for (int j = 0; j < p2.length; j++) {
                  Array[j + k] += (p1[j] * p2[j]);

           }
    }
    for (double element: Array) {
           System.out.println("------------------");
           System.out.println(element);
    }

} }

但它似乎不起作用,我在代码上没有看到任何错误,但这里是我在终端上得到的信息>>


[![此处][2]][2]
  1. 这里有个问题:p1[j]

    for (int k = 0; k < p1.length; k++) {
        for (int j = 0; j < p2.length; j++) {
            Array[j + k] += (p1[j] * p2[j]);
        }
    }
    

    您正在使用为 p2 创建的索引 [j] 在 p1 上循环。这有可能 导致错误。我想你想做的是 p1[k] * p2[j]

  2. 另一个问题可能是数组维度不是 j+k 而实际上只是 j 和 k 之间最大的

数组[j + k] += (p1[j] * p2[j])

应该是

数组[j + k] += (p1[k] * p2[j])