缺少return语句java

时间:2016-09-18 12:26:25

标签: java compiler-errors return

我有一个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;
}

从根本上说,它应该像这样工作:

  1. 真正邻居的初始数量为0

  2. 然后测试所有周围的单元格,如果它们中的任何一个为真,则将numNeighbours增加1

  3. 最后它返回最后的numNeighbours

  4. 然而,当我尝试遵守它时,我收到一条错误消息,提示"错误返回语句"。为什么会这样?据我所知,最后有一个非常清楚的回报声明。有人可以给我一些建议吗?

    非常感谢:)

2 个答案:

答案 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;

请注意,我使用了一对花括号来强调语句体(它可以防止进一步的错误),我建议你这样做。