4 回答

TA貢獻(xiàn)5條經(jīng)驗(yàn) 獲得超1個(gè)贊
?最外層的if邏輯是嚴(yán)謹(jǐn)?shù)模灰叩竭@里面就必須會(huì)有返回值;現(xiàn)在問(wèn)題出在最外層的else沒(méi)有絕對(duì)的最后返回值,雖然對(duì)于我們很直觀地可以看到,for循環(huán)必然會(huì)至少執(zhí)行一次,所以我們認(rèn)為也必然會(huì)有返回值。但其實(shí)for循環(huán)歸根結(jié)底也就是個(gè)判斷語(yǔ)法,編譯器在編譯過(guò)程中并不認(rèn)為a必須得大于2,換句話說(shuō)for循環(huán)體有可能不被執(zhí)行,即在這種情況下else米面的邏輯并沒(méi)有返回值,這樣編譯器就會(huì)拋出如上所示錯(cuò)誤。所以,這里可以用一個(gè)沒(méi)有實(shí)際意義的返回(其實(shí)在實(shí)際運(yùn)行中并不會(huì)執(zhí)行到),騙過(guò)編譯器,通過(guò)語(yǔ)法即可。示例如下(return true也可以,因?yàn)椴粫?huì)被執(zhí)行):

TA貢獻(xiàn)1條經(jīng)驗(yàn) 獲得超0個(gè)贊
你的問(wèn)題出現(xiàn)在第一個(gè)if哪里, 現(xiàn)在假設(shè)程序運(yùn)行到else代碼塊中,而假設(shè)a=0,那么程序就不會(huì)執(zhí)行你的for循環(huán),從而,你的else 代碼塊就結(jié)束了,這就是編譯器為什么出錯(cuò)。因?yàn)槌霈F(xiàn) 剛才的情況你的方法沒(méi)有返回值了

TA貢獻(xiàn)1123條經(jīng)驗(yàn) 獲得超629個(gè)贊
編輯器并不能判斷你一定進(jìn)入那個(gè)分支,所以所有的if都要有else,并且if和else里都要有return,否則你就在最外面的ifelse外面再來(lái)一個(gè)return兜底,這里主要是第27行的if里面只有if,萬(wàn)一進(jìn)了里面那個(gè)if的else,那就沒(méi)有return了
添加回答
舉報(bào)