2 回答
TA贡献1827条经验 获得超4个赞
欢迎,
在您的checkSubGrid()方法中,如果运行时未在最后一个输入,您需要返回一个值else if: else if (this.gridPlayer[x][y]...) {
如果方法不是void,则需要返回。
if(a > 1) {
return a;
} else {
return b;
}
在上面的这种情况下,我们有一个if - else语句,该方法将始终返回 true 或 false(或有异常)。
if(a > 1) {
return a;
} else if(a == 0) {
return b;
}
另一方面,该方法可以或不能进入第二个if,他们没有回报。您不能确保编译器会返回。
您可以通过放置默认返回或放置 else 语句来解决此问题。
if(a > 1) {
return a;
} else if(a == 0) {
return b;
} else {
return null;
}
或者
if(a > 1) {
return a;
} else if(a == 0) {
return b;
}
return null;
TA贡献1794条经验 获得超8个赞
编译器假设它不是 100% 确定将调用“for”循环中的 return 语句,因此它看到的路径是您的方法不返回任何值,即使它们声明它们返回。
您需要在循环之外有一些返回值,即使您确定这永远不会发生,即
private boolean checkLines(int x, int y, int value) {
for (int i = 0; i <= 9; i++) {
if (this.gridPlayer[x][i].getValue() == value) return false;
else return true;
}
return false; //even if you think it will never be run it is necessary
}
添加回答
举报