为了账号安全,请及时绑定邮箱和手机立即绑定

为什么 eclipse 说我的方法没有返回有效的结果?

为什么 eclipse 说我的方法没有返回有效的结果?

Qyouu 2021-10-27 10:18:44
一段时间以来,我一直在用 Java 为数独游戏编写此代码,但我不知道有什么问题,也许是“if”或 de“For”,但 IDE 说我的方法不返回布尔值类型。// check if the number has already been used in the columnsprivate boolean checkColumns(int x, int y, int value) {    for (int j = 0; j < 9; j++) {        if (this.gridPlayer[j][y].getValue() == value) return false;        else return true;    }    }// Check if the number has already been used in the linesprivate 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;    }    }// Check if the number has already been used and the subGridprivate boolean checkSubGrid(int x, int y) {    for (int i = 0; i <= 9; i++) {        for (int j = 0; j <= 9; j++) {            if (this.gridPlayer[x][y].getValueOfSubGrid(x, y) == this.gridPlayer[i][j].getValueOfSubGrid(i, j)) {                if (this.gridPlayer[x][y].getValue() == this.gridPlayer[i][j].getValue()) {                    return false;                } else {                    return true;                }            } else if (this.gridPlayer[x][y].getValueOfSubGrid(x, y) != this.gridPlayer[i][j].getValueOfSubGrid(i,                    j)) {                return true;            }        }    }}
查看完整描述

2 回答

?
GCT1015

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;


查看完整回答
反对 回复 2021-10-27
?
幕布斯7119047

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 

}


查看完整回答
反对 回复 2021-10-27
  • 2 回答
  • 0 关注
  • 156 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信