package homeWork;
/*
* 作业1、基础
打印出杨辉三角形(要求打印出10行如下图)
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
*/
public class PrintYangHuiTriangle {
public static void main(String[] args) {
PrintYangHuiTriangle p = new PrintYangHuiTriangle();
p.print(20);
}
public void print(int line) {
// 定义二维数组
int[][] array = new int[line][line];
// 循环录入元素
for (int i = 0; i < line; i++) {
for (int j = 0; j <= i; j++) {
if (j == 0) {
// 靠左第一个数都为1
array[i][j] = 1;
} else if (j == i) {
// 靠右第一个数都为1
array[i][j] = 1;
} else {
// 其余数等于头顶两个元素的和,将杨辉三角形结构消去空格可找出规律
array[i][j] = array[i – 1][j – 1] + array[i – 1][j];
}
}
}
// 获取最大那个数的数字长度,用于划分数与数的间距
int maxLength = String.valueOf(array[line – 1][line / 2]).length();
// 循环输出每行起始空格
for (int i = 1; i <= line; i++) {
// 上下行空格数量差等于距离最大数的数字长度,以便对齐
for (int j = 1; j <= (line – i) * maxLength; j++) {
System.out.print(” “);
}
for (int k = 0; k < i; k++) {
System.out.print(array[i – 1][k]);
// 当前输出的数字长度
int numLength = String.valueOf(array[i – 1][k]).length();
// 输出的空格数应减去数字所占长度以对齐
for (int b = 1; b <= maxLength + maxLength – numLength; b++) {
System.out.print(” “);
}
}
// 依规律得第n行有n个数字,for循环换行
System.out.println();
}
}
}