繁体   English   中英

用java中的循环填充参差不齐的数组

[英]Filling a ragged array with a loop in java

我想知道如何用 Java 中的循环填充参差不齐的数组。 在我的示例中,我想将 Pascals Triangle 放入数组中。 当我尝试这样做时,( // int [][] hako = new int [n][]; -> 据我所知;它给出了 java.lang.NullPointerException。谢谢

int      n    = 12, r = 1;
int [][] hako = new int [n][];

for(int i = 0; i < n; i++){
    for(int j = 0; j < r; j++){
        hako[i][j] = newton(i, j);
    }

    r++;
}

static int factorial(int n){
    int k = 1;

    if(n == 0)
        return 1;

    while(n>1){
        k*=n;
        n--;
    }

    return k;
}

static int newton(int i, int j){
    return factorial(i)/((factorial(j))*(factorial(i-j)));
}

您需要将hako[i]初始化为数组,然后才能将变量分配给其中的索引,即hako[i][j]

int      n    = 12, r = 1;
int [][] hako = new int [n][];

for(int i = 0; i < n; i++){
    for(int j = 0; j < r; j++){

        // need to initialize hako[i]
        hako[i] = new int[r];

        hako[i][j] = newton(i, j);
    }

    r++;
}

你的 hako,是一个矩阵,但你只初始化一个维度,因此你的 NullPointerException

修复它尝试

for(int i = 0; i < n; i++){
    hako[i] = new int[r];
    for(int j = 0; j < r; j++){
      hako[i][j] = newton(i, j);
    }
    r++;
}
public static void main(String[] args) {

    int y[][] = new int[4][];
    int four =4;
    for (int row = 0; row < y.length; row++) {
     y[row] = new int[four--];
    }

    RaggedArray(y);

    for (int row = 0; row < y.length; row++) {
        for (int column = 0; column < y[row].length; column++) {
            System.out.print(y[row][column] + " ");
        }
        System.out.println();
    }
}

public static void RaggedArray(int x[][]) {
    int j;
    for (int i = 0; i < x.length; i++) {
        int k=1;
        for (j = 0;j<x[i].length ; j++) {
            x[i][j] = k++;

        }

    }
}}

您可以更改大小并用任何数据填充它。 我希望它对你和任何人看到这段代码有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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