问题是我试图打印先前在构造函数中创建的矩阵,但似乎它是空的。
这是构造函数的代码:
public Matrix(int row_col){
int [][] randomMatrix = new int[row_col][row_col];
Random rand = new Random();
if (row_col > 0 && row_col < ROW_LIMIT && row_col < COL_LIMIT)
for (int i = 0; i < randomMatrix.length; i++)
for (int j = 0; j < randomMatrix[0].length; j++)
randomMatrix[i][j] = rand.nextInt(51);
}
方法的代码打印:
public void print(){
int row = randomMatrix.length;
int col = randomMatrix[0].length;
for(int i=0 ; i < row ; i++)
for(int j=0 ; j < col ; j++)
System.out.print(randomMatrix[i][j]);
}
问候!
答案 0 :(得分:4)
替换
int [][] randomMatrix = new int[row_col][row_col];
通过
this.randomMatrix = new int[row_col][row_col];
构造函数初始化并填充局部变量,而不是初始化和填充print()
方法使用的实例字段。
答案 1 :(得分:1)
看起来randomMatrix直接在构造函数的范围内定义,并且不存储在类的字段中。
如果已经将randomMatrix作为字段,请删除构造函数方法第一行中的int [] [],这样就可以引用该字段而不是声明一个新变量。
答案 2 :(得分:0)
您已经在构造函数中声明并初始化了数组randomMatrix
,并且只要执行了构造函数的代码,randomMatrix
数组就会超出print
方法的范围。< / p>
因此,当您尝试使用print
方法访问它时,没有此类randomMatrix
对象,因此您获得了NullPointerException