金字塔分析代码
1 public static void main(String[] args) {
2 // 行数
3 int lineNumber = 5;
4 // 基数
5 int baseNumber = 2;
6 // 生成数字,数字保存在数组中{1,2,4,8,...,2^n}
7 int[] numbers = new int[lineNumber];
8 numbers[0]=1;
9 for(int i = 1; i < lineNumber; i++) {
10 numbers[i] = numbers[i-1] * baseNumber;
11 }
12 // 计算每个数字占几个字符:最大的数字位数+2
13 int columnsPerNumber =
14 String.valueOf(numbers[lineNumber-1]).length() + 2;
15 // 输出,输出格式如下:
16 // 每个缩进 = columnsPerNumber个空格
17 // 每个数字宽度为columnsPerNumber
18 // 这样就可以形成金字塔状
19 // 缩进 缩进 缩进 数字
20 // 缩进 缩进 数字 数字 数字
21 // 缩进 数字 数字 数字 数字 数字
22 // 数字 数字 数字 数字 数字 数字 数字
23 for(int i = 0; i < lineNumber; i++) {
24 //输出缩进
25 for(int j = 0; j < lineNumber-i-1; j++)
26 System.out.printf("%"+columnsPerNumber+"s", " ");
27 //输出数字
28 //输出{1,2,4,8,...,2^n}
29 for(int k = 0; k < i+1; k++)
30 System.out.printf("%"+columnsPerNumber+"d", numbers[k]);
31 //输出{2^n-1,...,8,4,2,1}
32 for(int m = 0; m < i; m++)
33 System.out.printf("%"+columnsPerNumber+"d", numbers[i-m-1]);
34 //换行
35 System.out.println();
36 }
37 }