0

这很简单,但我真的不知道该怎么做。

我已经得到它,所以它可以工作,但它只适用于大小为 6 的数组,我尝试为它编写 for 循环,但我不确定如何每次减少空格数。也许我做错了,但这就是我现在所拥有的。

    public static void prettyPrint(int[] numbers) {
    System.out.println("   " + numbers[0]);
    System.out.println("  " + numbers[1] + " " + numbers[2]);
    System.out.println(" " + numbers[3] + " " + numbers[4] + " " + numbers[5]);

}

其中数组编号在上面定义为

    static int[] numbers = { 4, 3, 5, 6, 7, 8 };
4

1 回答 1

1

您可能希望使用循环来实现所需的输出。

首先,想想金字塔结构的本质。

可以在金字塔的第 i 行(从顶部算起)上表示的数字是 i。例如,在金字塔的顶部(即 i=第 1 行),只能显示单个数字。同样在第 5 行,显示 5 个数字。

记住这一点,代码看起来像这样:

int n = numbers.length;
int idx = 0;
int numRows = 0;

//First, calculate number of rows that pyramid will have 
while(idx < n){
    numRows++; 
    for(int numInRow=0; numInRow<numRows; numInRow++){
        idx++;
    }
}

//Make the pyramid
idx = 0;
for(int i=1; i <= numRows && idx < n; i++){ //Loop # of lines
    for(int j=0; j < (numRows-i) ; j++){
        System.out.print(" "); //Left pad
    }

    for(int j=0; j<i; j++){         // Add i many numbers only
        System.out.print(numbers[idx++] +" ");  //Print
        if(idx >= n){
            break;  //If index exceeds, break 
        }
    }
    System.out.println();   //New line
}
于 2013-02-22T02:07:56.967 回答