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

时间:2013-12-13 20:01:44

标签: java matrix static nullpointerexception return

请你帮帮我吧 这是我在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;
}

}

2 个答案:

答案 0 :(得分:2)

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

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

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

或者,特别是如果您想进行额外处理,可以使用static { }初始化程序块:

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

答案 1 :(得分:1)

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

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

// no constructor needed.