Java 在数组上迭代时出现NullPointerException

Java 在数组上迭代时出现NullPointerException,java,arrays,oop,Java,Arrays,Oop,当我执行这段代码时,我得到了一个NullPointerException 线程“main”java.lang.NullPointerException中的异常 在Matrixer.cellnightorsaverage(Matrixer.java:31) 在Matrixer.computeAverages(Matrixer.java:23) 位于Matrixer.main(Matrixer.java:75) 代码: import java.util.Scanner; 导入java.lang.*

当我执行这段代码时,我得到了一个NullPointerException

线程“main”java.lang.NullPointerException中的异常 在Matrixer.cellnightorsaverage(Matrixer.java:31) 在Matrixer.computeAverages(Matrixer.java:23) 位于Matrixer.main(Matrixer.java:75) 代码:

import java.util.Scanner;
导入java.lang.*;
类矩阵器
{
静态双[][]矩阵,计算矩阵;
最终整数行,cols;
公共矩阵器(整数N,整数M,双[][]imatrix)
{
行=N;
cols=M;
矩阵=imatrix;
计算矩阵=新的双精度[N][M];
}
公共无效计算平均值()
{
对于(int i=1;i对于(int i=0;i您从不初始化在
main
中使用的矩阵。此外,您可能不希望重用传递给
Matrixer
的相同矩阵实例

尝试将数组的声明更改为:

double[][] matrix, computedMatrix;
然后在主数组中使用另一个数组

public static void main(String[] args) throws NullPointerException {
    Scanner sc = new Scanner(System.in);
    double[][] inputMatrix = new double[5][5];
    try {
        for (int i = 0; i < 5; i++) {
            for (int j = 0; j < 5; j++) {
                inputMatrix[i][j] = sc.nextInt();
            }
        }
        Matrixer mx = new Matrixer(5, 5, inputMatrix);
        mx.computeAverages();
        mx.printComputedMatrix();
    } catch (NullPointerException e) {
        e.printStackTrace();
    }
}
publicstaticvoidmain(字符串[]args)抛出NullPointerException{
扫描仪sc=新的扫描仪(System.in);
双精度[]输入矩阵=新双精度[5][5];
试一试{
对于(int i=0;i<5;i++){
对于(int j=0;j<5;j++){
输入矩阵[i][j]=sc.nextInt();
}
}
矩阵器mx=新矩阵器(5,5,inputMatrix);
mx.computeAverages();
mx.printComputedMatrix();
}捕获(NullPointerException e){
e、 printStackTrace();
}
}

请注意,我还在
main
中更改了您的逻辑,该逻辑只有在得到NullPointerException时才会计算和显示平均值。

您从未初始化矩阵。看看构造函数@ZouZou。它看起来可能正在初始化。在一个地方,您的代码开始在computeAverages()中的for循环中以1计数,但在printComputedMatrix()中,你从0数到N-1。选择一个并坚持使用它(可能从0数到最好)。@jgitter不,这不是因为他将
matrix
作为
imatrix
传递,而是
matrix
未初始化。@Zouzu我看到了你现在看到的内容……我不知道我们是否看到了完整的代码。
public static void main(String[] args) throws NullPointerException {
    Scanner sc = new Scanner(System.in);
    double[][] inputMatrix = new double[5][5];
    try {
        for (int i = 0; i < 5; i++) {
            for (int j = 0; j < 5; j++) {
                inputMatrix[i][j] = sc.nextInt();
            }
        }
        Matrixer mx = new Matrixer(5, 5, inputMatrix);
        mx.computeAverages();
        mx.printComputedMatrix();
    } catch (NullPointerException e) {
        e.printStackTrace();
    }
}