java - 在Java图形(JFrame)中使用for循环反转“楼梯”
问题描述
我有下面的代码,它在java中使用for循环创建了一个楼梯:
for (int i = 0; i < 10; i++) {
g.drawRect(5, 5 + 10 * i, 10 + 10 * i, 10);
}
但我想要同样的东西,但是倒过来,颠倒,颠倒,如下图所示:
关于实现这一目标的最佳方法的任何想法?
解决方案
您可以将楼梯表示为某个角落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]
另请参阅:并排显示星号方块,实心和空心
推荐阅读
- jquery - 从表单字段创建 JSON - jQuery
- xamarin - 使用 Microsoft 应用中心从 VS2019 Xamarin.Forms 项目与 Mac 配对?
- sas - 所有带前缀的值的条件逻辑
- javascript - 如何使用 Mapbox-gl-js 中的 queryRenderedFeatures 访问像素坐标?
- javascript - 悬停菜单项
- macos - 在 MacOS 上安装 horovod
- c# - Include 中使用的 Lambda 表达式无效。包括不工作
- javascript - 如何使用 styled-components 和 React 有效地为组件添加变体
- python - 计算具有相同长度的两个数据帧的 RMSE
- python - 如何更改 matplotlib 工具栏的平移和缩放按钮的模式