尝试打印数组时Java中的NullPointerException

时间:2012-12-15 16:11:12

标签: java arrays exception nullpointerexception

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

这是构造函数的代码:

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

问候!

3 个答案:

答案 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