public ArrayList<GridCell> getAdjacent() {
ArrayList<GridCell> results = new ArrayList<GridCell>();
for (int r = this.getRow()-1; r<= this.getRow()+1; r++ ) {
for(int c = this.getColumn() -1 ; c<= this.getColumn() +1 ;c++) {
if (r == this.getRow() && c == this.getColumn()) {
}
else if (r < 0 || r > grid.getHeight() - 1 || c < 0 || c > grid.getWidth() - 1) {
}
else {
results.add(grid.get(r,c));
}
}
}
return results;
}
我试着创建一个嵌套的for循环来遍历元素的相邻行和列,看看它们是否超出了元素的实际范围,它应该输出元素的位置,但只输出二维数组的大小,例如4x3。
this.getRows()和这个.getColumns()表示数组中要查找其相邻元素的元素的位置坐标。例如(3,1)是要查找相邻元素的元素,数组的大小为4行乘3列,当前的输出是一个数组列表,值为(4,3)但是我希望它是一个数组列表,值为(3,0)(3,2)(2,0)(2,1)(2,2)。
1条答案
按热度按时间cbjzeqam1#
我们无法判断您的代码出了什么问题,因为我们无法看到所有这些支持函数,它们是否正确实现,以及您如何测试结果以查看它们是否正确。
不过,我会从重写
getAdjacent()
函数开始,使其更易于阅读和理解:如果
getRow()
或getColumn()
给予的坐标不在数组的边界内,它是否应该返回一个空的ArrayList?如果这些坐标刚好在边界外,而一些相邻的邻居在边界内呢?即使起始坐标在边界外,边界内的坐标是否仍然应该返回?这个版本的好处是你现在可以检查
curRow
,curCol
,r1
,r2
,c1
和c2
,看看这些值是否是你所期望的,这将告诉你这些支持函数是否工作正常。