代码之家  ›  专栏  ›  技术社区  ›  kaiya

通过迭代创建数字金字塔

  •  -1
  • kaiya  · 技术社区  · 6 年前

    我试图做一个数字金字塔,但在找到正确的条件时遇到了一些问题。

    int n = scanner.nextInt();
    int a;
    for(int q = 1; q <= n; q++)
    {
        for(int space = 0; space < n-q; space++){
            System.out.print(" ");
        }
        a = 1;
        for(int p = 1; p <= q; p++){
            if((p <= q / 2 && p != 1)){                         
                a++;
            }
            else if((p != 1) && (p > q / 2 + 1)){
                a--;
            }
            System.out.print(a+" ");
        }
        System.out.println();
    }
    

    假设结果:

        1
       1 1
      1 2 1
     1 2 2 1
    1 2 3 2 1
    

    我的代码的结果是

             1
            1 1
           1 1 0
          1 2 2 1
         1 2 2 1 0
        1 2 3 3 2 1
       1 2 3 3 2 1 0
      1 2 3 4 4 3 2 1
     1 2 3 4 4 3 2 1 0
    1 2 3 4 5 5 4 3 2 1
    
    1 回复  |  直到 5 年前
        1
  •  2
  •   assembler    6 年前

    试试这个,它很有效:

    int number = 5;
    for (int i = 0; i < number; i++) {
        int x = 1;
        for (int j = 0; j < (number + i); j++) {
            if (j < number - i - 1) {
                System.out.print(" ");
            } else {
                System.out.print(x);
                if (j < (number - 1)) {
                    x++;
                } else {
                    x--;
                }  
            }
        }
        System.out.println(" ");
    }