[英]Null pointer in a 2D array
几天来,我一直试图找到 null 指针问题。 代码编译得很好但是当它运行时消息 java.lang.NullPointerException at RandomArray.getRow(RandomArray.java:28) [这是下面指示的行 <--]
我傻吗?
//An instance variable to hold an array of integers
int[][] intHolder;
public RandomArray(int rows, int cols, int range) {
//Create a 2D array with values between 0-range
int[][] intHolder = new int[rows][cols];
for(int i = 0; i < rows; i++){
for(int j = 0; j < cols; j++){
intHolder[i][j] = (int)((range-1)*Math.random());
System.out.println(intHolder[i][j]); //PRINT FOR TESTING
}
}
}//constructor
public int[] getRow(int r){
//Return a copy (clone) of row r of the array
int[] arrayReturn = new int[intHolder[r].length]; //I was having problems here too, no idea why this works
for(int i = 0; i < intHolder[r].length; i++){
arrayReturn[i] = intHolder[r][i]; //The problem is here <--------------
System.out.println(arrayReturn[i]);
}
return arrayReturn;
}//getRow method
public int[] getCol(int c){
//Return a copy (clone) of column c of the array
int[] arrayReturn = new int[intHolder[c].length];
for(int i = 0; i < intHolder[c].length; i++){
arrayReturn[i] = intHolder[c][i];
System.out.println(arrayReturn[i]);
}
return arrayReturn;
}//getCol method
}//RandomArray class```
您有两个具有相同名称的变量:
int[][] intHolder;
您定义了一个“实例”变量,但它是 null。
public RandomArray(int rows, int cols, int range) {
int[][] intHolder = new int[rows][cols];
上面的代码在构造函数中定义了一个“局部”变量,不能被任何其他方法访问。
要初始化您的“实例”变量,以便可以在您使用的任何方法中使用它:
//int[][] intHolder = new int[rows][cols];
intHolder = new int[rows][cols];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.