尝试在java static中打印矩阵值时出现java.lang.NullPointerException



你能帮帮我吗这是我的java作业,我没有完成,我只是想看看它是否有效这是我试图运行的代码,由于某种原因,我得到了错误

java.lang.NullPointerException 

我认为这是静态的问题

public  class  Matrix {
public  static int[][] res ;
public static void main () {
    System.out.println(Square());
}
public Matrix () {
    int[][] res = {{1,2,3}, {4,5,6}};
}
public static int getElement (int r, int c) {
    return  res[r][c];
}
public static   int getNumberOfRows () {
    return res.length;
}
public static int getNumberOfColumns () {
    return 1;//return res[0].length;
}
public static int Square() {
    int count;
    int row=getNumberOfRows();
    int col=getNumberOfColumns();
    if (col==row) {
        for(int i=0;i< row ;i++) {
            for(int j=0;j< col ;j++) {
                return 5;
                // if (res[row-i][col-1]!=1) {
                //     return 0;
                // }
                // else {
                // 
                // }
            } 
        }
    }
    return -1;
}

}

您正试图在类构造函数中初始化res,而实际上它不是static。它仅在创建类的新实例时运行。实际上,您也没有在该构造函数中设置public static字段,因为您将在类构造函数中设置的res声明为其自己的局部变量,在该方法之外不可见。

要初始化静态字段的值,您可以在它们的声明语句中设置它们:

public static int[][] res = {{1, 2, 3},
                             {4, 5, 6}};

或者,特别是如果你想做额外的处理,你可以使用static { }初始化器块:

static {
    res = {{1, 2, 3},
           {4, 5, 6}};
}

删除构造函数并正确初始化静态字段

private static final int[][] res = { { 1, 2, 3 }, { 4, 5, 6 } };
// no constructor needed.

相关内容

最新更新