基本Java数组 - 打印增值的"金字塔"

1 java arrays multidimensional-array

我正在攻读编程课程中的测试,我似乎无法解决这个特定的练习问题:

编写一个构造一个名为 pyramid 的数组的代码,该数组输出以下数组:

0 0 0 0 0 0 0 0 
0 1 1 1 1 1 1 1
0 1 2 2 2 2 2 2 
0 1 2 3 3 3 3 3 
0 1 2 3 4 4 4 4 
0 1 2 3 4 4 5 5 
0 1 2 3 4 4 5 5 
Run Code Online (Sandbox Code Playgroud)

如你所见,它应该是相当简单的; 在相应的索引上分配与该元素相对应的行号和列号 - 但在我的生活中,我不能想出这一点.

这是我到目前为止所得到的:

public static void main(String[] args)
{
    int[][] list = new int[7][7];
    pyramid(list);
    for(int row = 0; row < list.length; row++)
    {
        for (int column = 0;column < list[row].length; column++)
        {
            System.out.printf("%2d ", list[row][column]);
        }
        System.out.println();
    }
}
static void pyramid(int[][] input)
{
    for(int r = 0; r < input.length; r++)
    {
        for(int c = 0; c < input[r].length; c++)
        {
            //what should go in here? 
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

配售

input[c][r] = r;
Run Code Online (Sandbox Code Playgroud)

在第二个循环的主体中让我更接近所需的输出 - 尽管它仍然不足.

输出:

 0  1  2  3  4  5  6 
 0  1  2  3  4  5  6 
 0  1  2  3  4  5  6 
 0  1  2  3  4  5  6 
 0  1  2  3  4  5  6 
 0  1  2  3  4  5  6 
 0  1  2  3  4  5  6  
 //arg!
Run Code Online (Sandbox Code Playgroud)

接下来是什么?我该怎么办?

任何帮助是极大的赞赏!

spr*_*ter 6

每个单元格中的值是行号和列号中较小的值:

input[c][r] = Math.min(c, r);
Run Code Online (Sandbox Code Playgroud)

为了您的兴趣,另一种方法是将每个值直接写入数组中的适当位置:

for (int i = 0; i < pyramid.length; i++) {
    for (int j = i; j < pyramid.length; j++) {
        pyramid[i][j] = i;
        pyramid[j][i] = i;
    }
}
Run Code Online (Sandbox Code Playgroud)