java打印任意行数的杨辉三角 利用二维数组 ,三个for循环:第一个控制行,第二个控制缩进,第三个判断并输出每一行的值)

import java.util.Scanner;

/**
 * 题目:打印出n行杨辉三角形(要求打印出效果如下图)      
            1   
          1    1   
        1    2    1   
      1    3    3    1   
    1    4    6    4    1    

 * @author vhviqd
 */
public class Homework33 {
    public static void main(String[] args) {
        /**
         * 思路:可以用二维数组:既a[i][j]={{1},{1,1},{1,2,1},{1,3,3,1}......},然后使用两层for循环,外层控制打印的行数,
         *           内部for循环进行判断每一行的收尾及中间部分,并打印每一行。随着行数的增加,每一行前面的缩进从
         *           第n行到第一行逐渐增加,第一行为n-1个缩进空格,所以缩进循环要放在两个for循环中间以控制每行的缩进
         *@--------我在做这个题的时候是:先利用二维数组不管其格式,先输出正确结果,然后在反复考虑每行缩进的问题,
         *  最初先是放在了内部for循环内,结果运行后结果不对,经过debug调试后才发现不能应该放在第一个for和第二个for之               *   间。第一次发博客,也是刚刚起步学习java,就当给自己做个笔记。同时也希望看到的朋友多多指教,互相学习。
         */
        Scanner in = new Scanner(System.in);
        System.out.println("请输入您要打印的杨辉三角行数:");
        int n = in.nextInt();
        int[][] arr = new int[n][n];

        /*
         * 利用外层for控制行,内行控制每行的长度。判断当行等于列的时候即arr[n][n] = 1;还有arr[n][1] = 1;
         */
        for (int i = 0; i < arr.length; i++) {
            //打印缩进空格,每一行只打印前面的
            int m ;
            for(m=n-1;m>0;m--) {
                System.out.print("    ");//4个空格调节每一行前面的空格数
            }
            n--;
            //每一行的数的个数等于行数
            for (int j = 0; j <= i; j++) {
                //判断每一行的收尾位置
                if (i == j || j == 0) {
                    arr[i][j] = 1;
                } else {
                    arr[i][j] = arr[i - 1][j] + arr[i - 1][j - 1];
                }
                //打印每一行数组
                System.out.print(arr[i][j]+"      ");//6个空格调节数字间距离
            }
            //换行
            System.out.println();
        }
    }
}

运行结果如下:

java打印任意行数的杨辉三角 利用二维数组 ,三个for循环:第一个控制行,第二个控制缩进,第三个判断并输出每一行的值)