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”循環(huán)中的 return 語句,因此它看到的路徑是您的方法不返回任何值,即使它們聲明它們返回。
您需要在循環(huán)之外有一些返回值,即使您確定這永遠不會發(fā)生,即
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
}
添加回答
舉報