首页 > 解决方案 > 在Java图形(JFrame)中使用for循环反转“楼梯”

问题描述

我有下面的代码,它在java中使用for循环创建了一个楼梯:

for (int i = 0; i < 10; i++) {
    g.drawRect(5, 5 + 10 * i, 10 + 10 * i, 10);
}

但我想要同样的东西,但是倒过来,颠倒,颠倒,如下图所示:

在此处输入图像描述

关于实现这一目标的最佳方法的任何想法?

标签: javaloopsswinggraphicsjframe

解决方案


您可以将楼梯表示为某个角落0的二维数组。1然后你可以遍历这个数组并为每个数字打印一个填充空心的正方形。

例如,右下角有楼梯的二维数组:

int m = 5;
int[][] staircase = IntStream.range(0, m)
        .mapToObj(i -> IntStream.range(0, m)
                //.map(j -> i >= j ? 1 : 0) // lower left
                //.map(j -> i <= j ? 1 : 0) // upper right
                //.map(j -> i + j < m ? 1 : 0) // upper left
                .map(j -> i + j >= m - 1 ? 1 : 0) // lower right
                .toArray())
        .toArray(int[][]::new);
// output
Arrays.stream(staircase).map(Arrays::toString).forEach(System.out::println);
[0, 0, 0, 0, 1]
[0, 0, 0, 1, 1]
[0, 0, 1, 1, 1]
[0, 1, 1, 1, 1]
[1, 1, 1, 1, 1]

另请参阅:并排显示星号方块,实心空心


推荐阅读