2 回答

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超4個(gè)贊
歡迎,
在您的checkSubGrid()方法中,如果運(yùn)行時(shí)未在最后一個(gè)輸入,您需要返回一個(gè)值else if: else if (this.gridPlayer[x][y]...) {
如果方法不是void,則需要返回。
if(a > 1) {
return a;
} else {
return b;
}
在上面的這種情況下,我們有一個(gè)if - else語(yǔ)句,該方法將始終返回 true 或 false(或有異常)。
if(a > 1) {
return a;
} else if(a == 0) {
return b;
}
另一方面,該方法可以或不能進(jìn)入第二個(gè)if,他們沒(méi)有回報(bào)。您不能確保編譯器會(huì)返回。
您可以通過(guò)放置默認(rèn)返回或放置 else 語(yǔ)句來(lái)解決此問(wèn)題。
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貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個(gè)贊
編譯器假設(shè)它不是 100% 確定將調(diào)用“for”循環(huán)中的 return 語(yǔ)句,因此它看到的路徑是您的方法不返回任何值,即使它們聲明它們返回。
您需要在循環(huán)之外有一些返回值,即使您確定這永遠(yuǎn)不會(huì)發(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
}
添加回答
舉報(bào)