2

问题是我正在尝试打印先前在构造函数中创建的矩阵,但它似乎是空的。

这是构造函数的代码:

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]);
}

问候!

4

3 回答 3

4

代替

int [][] randomMatrix = new int[row_col][row_col];

经过

this.randomMatrix = new int[row_col][row_col];

构造函数初始化并填充一个局部变量,而不是初始化和填充方法使用的实例字段print()

于 2012-12-15T16:13:41.853 回答
1

看起来 randomMatrix 是直接在构造函数的范围内定义的,而不是存储在类的字段中。

如果您已经有一个 randomMatrix 作为字段,请删除构造方法的第一行中的 int[][],这样您就可以引用该字段而不是声明一个新变量。

于 2012-12-15T16:14:06.830 回答
0

这是因为您已经randomMatrix在构造函数中声明并初始化了数组,并且一旦执行构造函数的代码,您的randomMatrix数组就会超出print方法的范围。

所以当你尝试在print方法中访问它时没有这样的randomMatrix对象,所以你得到NullPointerException

于 2012-12-15T16:14:06.210 回答