我有一个8x8的单元格,可以是true(1)或false(0)。我试图在java中编写一个方法,它计算列#34; col"中的指定单元格附近的真实单元格的数量。和行"行"。 "世界"是描述每个单元的初始状态的变量(每个位代表一个单元)。 getCell是一个返回由其参数指定的单元格的布尔值的方法。我已经测试了getCell方法并且它已经通过了我的所有测试,因此我相信它可以按预期工作。我的代码如下所示:
public static int countNeighbours(long world, int col, int row){
int numNeighbours = 0;`
if(getCell(world,col-1,row-1))
numNeighbours++;
if(getCell(world,col,row-1))
numNeighbours++;
if(getCell(world,col+1,row+1))
numNeighbours++;
if(getCell(world,col-1,row))
numNeighbours++;
if(getCell(world,col+1,row))
numNeighbours++;
if(getCell(world,col-1,row+1))
numNeighbours++;
if(getCell(world,col,row+1))
numNeighbours++;
if(getCell(world,col+1,row+1))
return numNeighbours;
}
从根本上说,它应该像这样工作:
真正邻居的初始数量为0
然后测试所有周围的单元格,如果它们中的任何一个为真,则将numNeighbours增加1
最后它返回最后的numNeighbours
然而,当我尝试遵守它时,我收到一条错误消息,提示"错误返回语句"。为什么会这样?据我所知,最后有一个非常清楚的回报声明。有人可以给我一些建议吗?
非常感谢:)
答案 0 :(得分:3)
您忘记在最后一个条件中增加numNeighbours
。因此,只有在最后一个条件为真时才执行return语句:
if(getCell(world,col+1,row+1))
return numNeighbours;
将其更改为:
if(getCell(world,col+1,row+1))
numNeighbours++; // added
return numNeighbours;
答案 1 :(得分:1)
您的return
声明与最后if
声明有关:
if(getCell(world,col+1,row+1)) return numNeighbours;
您最好更改上一个if
语句[1]的正文,或者最后添加另一个return
[2]:
// [1]
if(getCell(world,col+1,row+1)) {
// a body
}
return numNeighbours;
...
// [2]
if(getCell(world,col+1,row+1)) {
return numNeighbours;
}
return numNeighbours;
请注意,我使用了一对花括号来强调语句体(它可以防止进一步的错误),我建议你这样做。