2017-04-20 79 views
0

我正在编写一些打印Pascal三角形的代码。我需要用一个二维数组的每一行,但不知道如何让内部阵列具有可变长度,因为它也将永远改变基于它是什么行INT,例如:具有可变内部阵列长度的2D阵列JAVA

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

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

另外我如何打印这个二维数组?

+0

' array [x] = new int [y];',其中'y'是给定行的大小(而'x'是'行')。 –

+0

我是否应该在一个循环中编写它(每个循环中x被提高一个),假设我从不知道行数? –

+0

行数是'n + 1'。不确定你在问什么。 –

回答

0

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

for(int i=0; i<array.size;i++){//this loops through the first part of array 
    for(int j=0;j<array[i].size;j++){//this loops through the now row 
      //do something 
    } 
} 

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

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