java 中 最简单杨辉三角形怎么输出呢

2025-02-23 22:06:00
推荐回答(3个)
回答1:

动态格式化版杨辉三角输出:
-----------------------------------------------------------------------------------
public class Test {

private static int level = 10; // 想输出多少行就修改这个数

public static void main(String[] args) {
int[][] arrays = new int[level][level];
int max = 0;
arrays[0][0] = 1;
for (int i = 1; i < level; i++) {
arrays[i][0] = 1;
for (int j = 1; j < i; j++) {
arrays[i][j] = arrays[i - 1][j - 1] + arrays[i - 1][j];
if (arrays[i][j] > max)
max = arrays[i][j];
}
arrays[i][i] = 1;
}

StringBuilder sb = new StringBuilder();
int maxWidth = String.valueOf(max).replaceAll("\\d", " ").length();
maxWidth += maxWidth % 2 == 0 ? 2 : 3;
String bitSpace = space(maxWidth / 2, " ");

for (int i = 0; i < level; i++) {
sb.append(space(level - i - 1, bitSpace));
for (int j = 0; j <= i; j++) {
int width = String.valueOf(arrays[i][j]).length();
int before = (maxWidth - width) / 2;
int after = maxWidth - before - width;
sb.append(String.format("%" + before + "s%d%" + after + "s", " ", arrays[i][j], " "));
}
sb.append("\n");
}
System.out.print(sb.toString());
}

private static String space(int length, String space) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < length; i++)
sb.append(space);
return sb.toString();
}
}
----------------------------------------------------------
5行输出:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1

10行情况:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1

15行输出:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
1 10 45 120 210 252 210 120 45 10 1
1 11 55 165 330 462 462 330 165 55 11 1
1 12 66 220 495 792 924 792 495 220 66 12 1
1 13 78 286 715 1287 1716 1716 1287 715 286 78 13 1
1 14 91 364 1001 2002 3003 3432 3003 2002 1001 364 91 14 1

---------------------------
HTML中显示的空格和数字不一定是一个宽度,本代码在Eclipse中输出是绝对整齐的。

回答2:

for(循环){
out.println("数字");
}
就输出了

回答3:

public class YanghuiTriangle {
public static void main(String[] args){
display(10);
}

private static void display(int n){
// 初始化二维数组
int[][] arr=new int[n][n];

// 左边及对角线赋初值1
for(int i=0;i arr[i][0]=1;
arr[i][i]=1;
}

// 下方的数等于左上方和正上方两数之和
for(int i=2;i for(int j=1;j arr[i][j]=arr[i-1][j-1]+arr[i-1][j];
}
}

// 显示数组
for(int i=0;i for(int j=0;j<=i;j++){
System.out.print(arr[i][j]+"\t");
}

System.out.println();
}
}
}