0

我在尝试使用方法单独访问我的三角形数组时遇到问题,每次我尝试使用时tarray[i][j]都会得到一个空指针异常,除非它是在类创建中完成的,例如我有一个 get 方法并且已经使用return tarray[0][0]它即使它在创建过程中打印得很好,也会向我抛出错误。

我知道我可能在做一些愚蠢的事情,但我就是想不通,

public class Triangular<A> implements Cloneable
{

    private int inRa;
    private A [][] tarray;

    /**
     * Constructor for objects of class Triangular
     * @param indexRange - indices between 0 and indexRange-1 will be legal to index
     *                     this a triangular array
     * @throws IllegalArgumentException - if indexRange is negative                    
     */
    public  Triangular(int indexRange) throws IllegalArgumentException
    { 
        inRa=indexRange;
        int n = inRa; 
        int fill = 1;
        Object [][] tarray = new Object [inRa + 1][];
          for (int i = 0; i <= inRa; i++){
           tarray[i] = new Object [n];

          }

          for (int i = 0; i < tarray.length; i++){

          for (int j = 0; j + i < tarray[i].length; j++){
          tarray[i][j + i] = fill;
          fill ++;
        }
        }

        for (int i = 0; i < tarray.length; i++) {
        for (int j = 0; j + i < tarray[i].length; j++){
        System.out.print(tarray[i][j + i] + " ");  
       }
       System.out.println();

       }

    }
}

感谢您的帮助!

4

1 回答 1

1

您不会对构造函数中的tarray 字段进行任何初始化,而是初始化同名的局部变量;这个:

Object [][] tarray = new Object [inRa + 1][]; // doesn't access the tarray field

但是,您必须为该tarray字段分配一些内容才能修复 NPE。

BTW:最好不要使用与字段同名的局部变量。

于 2015-10-17T22:47:04.197 回答