public class Tank {
double[][] a;

//初始化数据
public void init(int count1, int count2) {

a = new double[count1][];
for(int i=0; i<count2; i++) {
a[i] = new double[count2];
}

//初始化数据,全设为1
for(int i=0; i<count1; i++)
for(int j=0; j<count2; j++) {
a[i][j] = 1;
}
}

//输出数据
public void pri() {
for(int i=0; i<a.length; i++)
for(int j=0; j<a[i].length; j++) {
System.out.println(a[i][j]);
}
} public static void main(String[] args) {
Tank a = new Tank();
a.init(3, 2);
a.pri();
}
}这会抛出Exception in thread "main" java.lang.NullPointerException的错误,请问是哪里错了呢??

解决方案 »

  1.   


    public void init(int count1, int count2) {
            
            a = new double[count1][];
            for(int i=0; i<count1; i++) {//应该是count1
                a[i] = new double[count2];
            }
      

  2.   

    a = new double[count1][];
    for(int i=0; i<count2; i++) {
       a[i] = new double[count2];
    }
    上面这段代码有问题
    你可以这么写a = new double[count1][count2];
      

  3.   

    不规则二维数组初始化问题
    count2 改为 count1
    按楼上的说法改吧!
      

  4.   

    public class Tank {
        double[][] a;
        
        //初始化数据
        public void init(int count1, int count2) {
            
            a = new double[count1][];
            for(int i=0; i<count2; i++) {
                a[i] = new double[count2];
            }

            
            //初始化数据,全设为1
            for(int i=0; i<count1; i++)
                for(int j=0; j<count2; j++){
                    a[i][j] = 1;
                }

        }
        
        //输出数据
        public void pri() {
            for(int i=0; i<a.length; i++)
                for(int j=0; j<a[i].length; j++) {
                    System.out.println(a[i][j]);
                }
        }    public static void main(String[] args) {
            Tank a = new Tank();
            a.init(3,2);
            a.pri();
        }
    }