通过迭代创建数字金字塔

时间:2017-11-16 12:31:25

标签: loops for-loop if-statement iteration pyramid

我正在尝试制作一个数字金字塔,但要找到合适的条件有一些问题。

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 个答案:

答案 0 :(得分:1)

试试这个,它有效:

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(" ");
}