请问大家这个怎么解决呢

img


 public static void printPyramid(int n){

        for(int i = 1 ; i <= n; i++){
            for(int j = i; j < n;j++){
                System.out.print("  ");
            }
            for(int j = i; j>=1;j--){
                System.out.print(j + " ");
            }
            for(int j = 2; j<=i;j++){
                System.out.print(j + " ");
            }
            System.out.println();
        }
    }

img

n = 1,2,3,及偶数时会有些问题


int count = 8;
        for (int i = 0; i < count; i++) {
            for (int x = 0; x < count - i; x++) {
                System.out.print("  ");
            }
            for (int j = i; j > 0 ; j--) {
                System.out.print(j + " ");
            }
            for (int z = 1; z < i ; z++) {
                System.out.print(z + 1 + " ");
            }
            System.out.println();
        }

总结规律,

输入数字 7
第一行:12个空格,1个数字,1
第二行:10个空格,3个数字,212,中间有空格
第三行:8个空格,5个数字,32123,中间有空格
...
第七行:0个空格,13个数字,7654321234567,中间有空格

规律:逐行打印,输入7,则共打印7(总行数,max)行,加设当前打印到第n行,那么:
先打印 (max-1)*2 - 2 * n 个空格
判断 n
如果 n == 1,打印1换行
否则
循环 i 从 n 到 1,打印 i + " "
再循环 i 从 2 到 n, 打印 i + " "
结束


 for (int i = 1;i<=num;i++){
            for (int j = num-i;j>0;j--){
//制表这样就不会乱了
                System.out.print("\t");
            }
            for (int j = i;j>0;j--){
                System.out.print(j+"\t");
            }
            for (int j = 2;j<=i;j++){
                System.out.print(j+"\t");
            }
            System.out.println();
        }