如何在Java中的for循环中打印二维数组

时间:2013-12-16 16:16:28

标签: java arrays

我试图在java中绘制pascal三角形

这是我的代码

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);
}

我在这里使用了三个循环,如何通过使用单个循环或至少两个循环来解决这个问题,我不想使用不同的循环来打印数组。

1 个答案:

答案 0 :(得分:1)

使用this formula我们得到算法:

// 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();
}