Shuvro Shuvro
Shuvro Shuvro

Reputation: 139

How to print a two dimensional array within a for loop in Java

I am trying to draw pascal triangle in java

Here is my code

static void printPascalTriangle(int length){               
    int[][] pascal=new int[length][length];

    for (int i = 0; i < length; i++) {
        pascal[0][i]=1;
        pascal[i][0]=1;
    }  // here length is the dimension of pascal triangle , first loop is for filling up the first row and column with zero 

    for (int row = 1; row < length; row++) {
        for (int column = 1; column < length-row; column++) {
            pascal[row][column]=pascal[row][column-1]+pascal[row-1][column];
        }

    } //  this loop is for filling up the rest of position

    for (int row = 0; row < length; row++) {
        for (int column = 0; column < length-row; column++) {
            pr(pascal[row][column]+"\t");
        }
        prln("\n");

    } // this loop is for printing the array 



}


static void prln(Object anyObject){
    System.out.println(anyObject);
}

static void pr(Object anyObject){
    System.out.print(anyObject);
}

I have used three loops here , How can I solve this problem by using a single loop , or at least two loop , I do not want to use a different loop for printing the array .

Upvotes: 0

Views: 406

Answers (1)

SamYonnou
SamYonnou

Reputation: 2068

Using this formula we get the algorithm:

// for each row 
for (int row = 0; row < length; row++) {
  // the value of the previous column in this row
  // it doesn't really matter what we initialize this to
  // since we never use the initial value anyway
  int previous = 1;

  // for each column in this row
  // row 0 has 1 column and each subsequent row has one more
  for (int column = 0; column <= row; column++) {
      // the value of the current column in the row
      // the default value is 1, since that is always the value 
      // of the first column in every row
      int current = 1;

      // if the current column isn't the first, use formula
      // from the wikipedia article to compute the current column
      if (column != 0) {

          // we cast 'column' to a double so that the decimal does not get
          // truncated during division
          current = (int) (previous * ((row + 1 - column) / (double) column));
      }

      // print out the current column followed by a space
      System.out.print(current + " ");

      // set the value of the previous column to the current column value
      // this will be used in the next iteration of this for loop
      previous = current;
  }

  // print a new line to start a new row
  System.out.println();
}

Upvotes: 1

Related Questions