java是检查索引越界的有效方法
我有一个n x n 2D数组,需要将随机点连接到四个相邻点(抱歉,我添加了图片,但似乎必须单击链接才能显示图像)
我希望使用如下代码:
connect(p, p - n);
connect(p, p + n);
connect(p, p - 1);
connect(p, p + 1);
我现在遇到的问题是边缘上的索引超出了边界。最初我创建了大小为(n+2)*(n+2)的数组来解决这个问题。这保留了代码的简单性,但是我没有满足分配的存储要求。数组必须是n*n
我研究并修改了我的算法
connect(grid[i][j], grid[Math.max(0, i-1)][j]);
connect(grid[i][j], grid[Math.min(n - 1, i+1)][j]);
connect(grid[i][j], grid[i][Math.max(0, j-1)]);
connect(grid[i][j], grid[i][Math.min(n - 1, j+1)]);
现在,它会将点连接到自身,这是不允许的。我的问题是——是否有更好/更干净的方法来检查指数是否超出范围?谢谢大家
# 1 楼答案
包装连接方法
因此,您可以像往常一样使用这个connectWrapper来替换connect方法
# 2 楼答案
你总是可以在邻居之间兜圈子。我经常这样做:
当我对按特定顺序浏览邻居很挑剔时:
# 3 楼答案
我个人认为:
让{}做这件事:
它完全假设网格是一个N*N的矩阵
您也可以不关心检查:
我确实认为这很糟糕,因为抓捕往往比检查花费更多——即使检查两次