具有可变内部阵列长度JAVA的2D阵列

时间:2017-04-20 01:30:03

标签: java arrays

我目前正在编写一些打印Pascal三角形的代码。我需要为每一行使用一个2D数组,但不知道如何让内部数组具有可变长度,因为它也总是根据它的int行改变,例如:

public int[][] pascalTriangle(int n) {
    int[][] array = new int[n + 1][]
}

正如你所看到的,我知道如何让外部数组具有我需要的Pascal三角形的大小,但是我不知道如何获得与当前行相对应的行的可变长度

另外,我将如何打印这个2D阵列?

2 个答案:

答案 0 :(得分:0)

基本上你想要发生的是得到每一行的大小。

int z

您现在应该可以使用此示例来打印三角形。

答案 1 :(得分:0)

这是我在StackOverFlow上的第一个答案。我是一名新生,刚学过Java作为我学位的一部分。 为了使每一步都清楚,我将在不同的方法中使用不同的代码。

假设n告诉我们要为三角形打印多少行。

public static int[][] createPascalTriangle(int n){
    //We first declare a 2D array, we know the number of rows
    int[][] triangle = new int[n][];
    //Then we specify each row with different lengths
    for(int i = 0; i < n; i++){
        triangle[i] = new int[i+1];  //Be careful with i+1 here.
    }
    //Finally we fill each row with numbers
    for(int i = 0; i < n; i++){
        for(int j = 0; j <= i; j++){
            triangle[i][j] = calculateNumber(i, j);
        }
    }
    return triangle;
}
//This method is used to calculate the number of the specific location
//in pascal triangle. For example, if i=0, j=0, we refer to the first row, first number.
public static int calculateNumber(int i, int j){
    if(j==0){
        return 1;
    }
    int numerator = computeFactorial(i);
    int denominator = (computeFactorial(j)*computeFactorial(i-j));
    int result = numerator/denominator;
    return result;
}

//This method is used to calculate Factorial of a given integer.
public static int computeFactorial(int num){
    int result = 1;
    for(int i = 1; i <= num; i++){
        result = result * i;
    }
    return result;
}

最后,在main方法中,我们首先创建一个pascalTriangle,然后使用for循环将其打印出来:

public static void main(String[] args) {
    int[][] pascalTriangle = createPascalTriangle(6);
    for(int i = 0; i < pascalTriangle.length; i++){
        for(int j = 0; j < pascalTriangle[i].length; j++){
            System.out.print(pascalTriangle[i][j] + " ");
        }
        System.out.println();
    }
}

这将产生如下输出:

1 
1 1 
1 2 1 
1 3 3 1 
1 4 6 4 1 
1 5 10 10 5 1