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