在以下Java程序中获取错误。为什么?

时间:2015-02-04 13:05:59

标签: java eclipse

我收到错误为“线程中的异常”主“java.lang.NullPointerException     在Pascal.main(Pascal.java:8)“

public class Pascal {
    public static void main(String args[]){

    int rows,i,j,k;
    rows=Integer.parseInt(args[0]);
    double pas[][]= new double[rows][];
    pas[0][0]=1; //the line of error

    for (i=1;i<=rows;i++){
        for (j=1;j<=i;j++){
            pas[i-1][j-1]=pas[i-2][j-2]+pas[i-2][j-1];
        }
    }

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

}

为什么我在线收到错误:pas [0] [0] = 1;

4 个答案:

答案 0 :(得分:2)

您只使用double pas[][]= new double[rows][];初始化外部数组,因此pas[0]仍为null,而pas[0][0]NullPointerException

更改

pas[0][0]=1;

pas[0] = new double[1];
pas[0][0]=1;

您还必须为其他行调用pas[i] = new double[some-length];

答案 1 :(得分:1)

你没有正确初始化你的数组

double pas[][]= new double[rows][here columns are missing];

答案 2 :(得分:0)

在二维数组中,您还必须指定列大小。

double pas[][]= new double[rows][cols];

答案 3 :(得分:0)

package com.survey.ui;

class demo {
public static void main(String args[]){

    int rows,i,j,k;
    rows=Integer.parseInt(args[0]);
    double pas[][]= new double[rows][Integer.parseInt(args[0])];
    pas[0][0]=1;

    for (i=2;i<=rows;i++){
        for (j=2;j<=i;j++){
            pas[i-1][j-1]=pas[i-2][j-2]+pas[i-2][j-1];
        }
    }


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

我不了解您的业务逻辑,但上面会运行。