2

这是代码:

private int getUpSite(int i, int j){
    if (i - 1 >= 1){
        if (grid[i - 2][j] != 0){
            return xyTo1D(i - 1, j);
        }
    }
    else{
        return -1;
    }
}

根据 i 和 j 的值,该方法返回 -1 或由 xyTo1D 方法构建的另一个整数。问题是编译器一直在抱怨:“这个方法必须返回一个 int 类型的结果”。

代码有什么问题?我该如何解决?

4

3 回答 3

6

如果控制不进入二级会if怎样?

if (grid[i - 2][j] != 0)

没有返回声明,不是吗?

您需要return对所有可能的路径都有一个声明。

我该如何解决?

一种可能的方式:

如果也为第一级添加return语句。例子

if (i - 1 >= 1){
        if (grid[i - 2][j] != 0){
            return xyTo1D(i - 1, j);
        }
       return -1; //OR whatever int you would like to return
    }
于 2013-08-30T04:10:09.623 回答
1
private int getUpSite(int i, int j){
int returnVal = -1;
    if (i - 1 >= 1){
        if (grid[i - 2][j] != 0){
            returnVal = xyTo1D(i - 1, j);
        }
    }
return returnVal;
}
于 2013-08-30T04:11:41.457 回答
0
private int getUpSite(int i, int j){   
    int returnValue=-1;   
    if (i - 1 >= 1 && grid[i - 2][j] != 0){
       returnValue = xyTo1D(i - 1, j);
    }
    return returnValue;
}
于 2013-08-30T05:02:08.237 回答