You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java如何精简二维数组遍历绘制方块的冗余代码

Java二维数组渲染方块的代码优化方案

现有代码问题

你当前的实现存在三个明显问题:

  • 冗余度极高:你枚举的所有map[行号][列号]位置的取值全是1,堆了13个逻辑完全一致的if判断,完全没有必要。
  • 存在越界隐患:内层列循环写的是j < map.length,这个写法只在二维数组是严格正方形(行列数相等)时才不会报错,如果后续调整地图为非正方形尺寸,会直接触发数组下标越界异常。
  • 可维护性差:如果后续调整二维数组里的数值、修改1的位置,你需要手动增删对应的if判断,很容易漏改或者写错坐标。

优化思路

核心逻辑非常直接:你的需求是在二维数组值为1的位置绘制方块,不需要提前枚举所有值为1的坐标做比对,遍历到每个元素时直接判断当前值是否为1即可,同时修正内层循环的边界判断。

优化后实现代码

for (int i = 0; i < map.length; i++) {
    // 内层循环取当前行的列长度作为边界,避免越界
    for (int j = 0; j < map[i].length; j++) {
        if (map[i][j] == 1) {
            gc.fillRect(i, j, 1, 1);
        }
    }
}

优化后代码从原来的近30行压缩到7行,没有任何重复逻辑,后续修改地图数据(就是你贴的8*8二维数组)时完全不需要改动渲染代码,只要数组里值为1的位置都会自动绘制方块。

补充说明:如果你后续需要扩展逻辑,比如值为2的位置绘制其他颜色的方块,只需要在if后追加对应的else if (map[i][j] == 2)分支即可,不需要改动循环结构。

内容的提问来源于stack exchange,提问作者some chars

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 05:57:13