我需要取一个整数数组并将它们打印成金字塔

时间:2013-02-22 01:22:05

标签: java arrays int

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

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

    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 };

1 个答案:

答案 0 :(得分:1)

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

首先,考虑一下金字塔结构的本质。

可以在金字塔的第i行(从顶部开始计算)上表示的数字是i。 例如,在金字塔的顶部(即i =第一行),只能显示一个数字。同样在第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
}