【发布时间】:2017-01-26 05:25:41
【问题描述】:
我有一个 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
但是,当我尝试遵守它时,我收到一条错误消息,上面写着“错误缺少返回语句”。为什么会这样?据我所知,最后有一个很清楚的return语句。有人可以给我一些建议吗?
非常感谢:)
【问题讨论】:
-
return 语句在最后一个 if 中。尝试在最后一个 if 后面加一个分号。
-
一些注意事项:(a) 在这里使用花括号会有所帮助,这也是很多人(包括我)喜欢总是使用它们的原因之一。 (b) 你没有-1、-1,但你有两次+1、+1。那是故意的吗? (c) 假设没有,一对嵌套的
for循环在这里不太容易出错。 “对于从 -1 到 +1 的 colDelta,对于从 -1 到 +1 的 rowDelta,如果 getCell,则递增。”它会更清晰、更短、更好
标签: java compiler-errors return