我正在尝试在java上将数组和2d数组相乘并且我的程序编译但是仍然会返回错误java.lang.NullPointerException;当我尝试输入任何内容时为null。到目前为止,这是我的代码:
static double[][] productWithDiagonal(double[] a, double[][] b)
{
double[][] c = new double[3][];
{
for (int i = 0; i < b.length; ++i) {
for (int j = 0; j < b[1].length; ++j) {
c[i][j] = a[j] * b[i][j];
}
}
}
return c;
}
由于
答案 0 :(得分:2)
这里:
double[][] c = new double[3][];
仅实例化&#34;行&#34;。你需要像
这样的东西double[][] c = new double[3][3];
或者更有用
... c = new double[b.length][b[0].length];
代替。但是要确定:那些数字很重要;你应该确保 b 例如是一个&#34;常规矩形&#34;形状矩阵 - 以便所有行具有相同的列数。当然, a 也应该与b具有相同的列数。您可以在方法的开头添加此类检查;确保 a 和 b 的形状实际上允许这种乘法!
你看,在Java中,一个双暗的数组只不过是一个包含另一个数组的数组。您的初始代码只会启动&#34;外部&#34;数组,离开&#34;内部&#34;数组在 null 。