为什么我的代码不工作-终端上说了什么?

slmsl1lt  于 2021-07-03  发布在  Java
关注(0)|答案(2)|浏览(376)

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

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]

k2fxgqgv

k2fxgqgv1#

这里有一个问题: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]
另一个问题可能是数组维数不是j+k,实际上只是j和k之间的最大值

waxmsbnn

waxmsbnn2#

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

相关问题