繁体   English   中英

二维数组中的 Null 指针

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM