亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

定義判斷質數的方法,奇怪的語法錯誤

定義判斷質數的方法,奇怪的語法錯誤

斯蒂芬大夫 2016-09-16 14:47:54
錯誤提示如下:我明明有返回布爾值,為什么還出錯?
查看完整描述

4 回答

已采納
?
遺忘草

TA貢獻5條經驗 獲得超1個贊

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


http://img1.sycdn.imooc.com//57dd6044000129f104320341.jpg


查看完整回答
反對 回復 2016-09-17
?
Teemo_

TA貢獻11條經驗 獲得超21個贊

舉例來說,你28行的if如果不成立,則沒有返回值。

查看完整回答
反對 回復 2016-09-17
?
一直被忽略

TA貢獻1條經驗 獲得超0個贊

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

查看完整回答
反對 回復 2016-09-16
  • 斯蒂芬大夫
    斯蒂芬大夫
    運行到第一個if的else那里,a就已經是大于等于3了,怎么會低于0?
?
Caballarii

TA貢獻1123條經驗 獲得超629個贊

編輯器并不能判斷你一定進入那個分支,所以所有的if都要有else,并且if和else里都要有return,否則你就在最外面的ifelse外面再來一個return兜底,這里主要是第27行的if里面只有if,萬一進了里面那個if的else,那就沒有return了

查看完整回答
反對 回復 2016-09-16
  • 斯蒂芬大夫
    斯蒂芬大夫
    進了里面那個if的else時不應該是進入下一次循環嗎?到時候自然會return啦 如果按你說的,那應該怎么改?
  • Caballarii
    Caballarii
    其實a大于等于3這個else分支里你的邏輯是混亂的,反正你之前的問題都沒采納過,懶得說了
  • 斯蒂芬大夫
    斯蒂芬大夫
    不混亂啊,大致意思是a如果全部都不能整除2到a-1之間的整數,則a為質數。之前的那個問題沒采納是因為,你的回答并沒有解決我的問題,你說的沒有令我看懂。
  • 4 回答
  • 0 關注
  • 1905 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號