4 回答
已采納

遺忘草
TA貢獻5條經驗 獲得超1個贊
?最外層的if邏輯是嚴謹的,只要走到這里面就必須會有返回值;現在問題出在最外層的else沒有絕對的最后返回值,雖然對于我們很直觀地可以看到,for循環必然會至少執行一次,所以我們認為也必然會有返回值。但其實for循環歸根結底也就是個判斷語法,編譯器在編譯過程中并不認為a必須得大于2,換句話說for循環體有可能不被執行,即在這種情況下else米面的邏輯并沒有返回值,這樣編譯器就會拋出如上所示錯誤。所以,這里可以用一個沒有實際意義的返回(其實在實際運行中并不會執行到),騙過編譯器,通過語法即可。示例如下(return true也可以,因為不會被執行):

一直被忽略
TA貢獻1條經驗 獲得超0個贊
你的問題出現在第一個if哪里, 現在假設程序運行到else代碼塊中,而假設a=0,那么程序就不會執行你的for循環,從而,你的else 代碼塊就結束了,這就是編譯器為什么出錯。因為出現 剛才的情況你的方法沒有返回值了

Caballarii
TA貢獻1123條經驗 獲得超629個贊
編輯器并不能判斷你一定進入那個分支,所以所有的if都要有else,并且if和else里都要有return,否則你就在最外面的ifelse外面再來一個return兜底,這里主要是第27行的if里面只有if,萬一進了里面那個if的else,那就沒有return了
添加回答
舉報
0/150
提交
取消