编译器错误缺少返回语句java
我有一个8x8单元格网格,它可以是真(1)或假(0)。我试图用java编写一个方法,计算列“col”和行“row”中与指定单元格相邻的真实单元格数。“world”是一个描述每个单元初始状态的变量(每个位代表一个单元)。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
然而,当我试图遵守它时,我会收到一条错误消息,上面写着“error missing return statement”。为什么会这样?据我所知,最后有一个非常明确的返回声明。谁能给我一些建议吗
非常感谢:)
# 1 楼答案
您的
return
语句与最后一个if
语句相关:您最好更改最后一个
if
语句[1]的主体,或者在[2]的末尾添加另一个return
:请注意,我使用了一对大括号来强调语句主体(这将防止进一步的错误),我建议您这样做
# 2 楼答案
您忘记在最后一个条件中增加
numNeighbours
。因此,只有当最后一个条件为true时,才会执行return语句:将其更改为: