你能帮帮我吗这是我的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.