2017-04-20 103 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