[問題] 想請問一下這一段程式碼錯在哪裡?

看板java作者 (峰)時間15年前 (2010/04/17 12:37), 編輯推噓4(4014)
留言18則, 10人參與, 最新討論串1/2 (看更多)
44 public String toString() 45 { 46 if(imaginary==0) 47 return (real+""); 48 49 else if(imaginary<0) 50 return (real+"-"+(imaginary*(-1))+"i"); 51 52 else if(imaginary>0) 53 return (real+"+"+imaginary+"i"); 54 } 我在compile的時候會顯示 C:\Users\acer\Desktop\5_7\ComplexNumber.java:54: missing return statement } ^ 1 error 但是我如果把這一段給刪除,compile就會成功, 所以我想問題應該是出在這一段。 不過我不曉得到底哪裡有出錯呢? 看不太出來的說... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.120.222.46

04/17 12:53, , 1F
function要在class{}裡
04/17 12:53, 1F

04/17 13:09, , 2F
應該是少了else ,語法錯誤
04/17 13:09, 2F

04/17 13:10, , 3F
最後的 else if 改成 else
04/17 13:10, 3F

04/17 13:26, , 4F
所以程式會先判斷是否==0,若不等於0,則會接著
04/17 13:26, 4F

04/17 13:29, , 5F
判斷是否<0,最後才判斷是否>0嗎? 如果最後面改成 else
04/17 13:29, 5F

04/17 13:38, , 6F
剛剛去再翻一次書終於懂了,原來跟C有點差異 @@"
04/17 13:38, 6F

04/17 14:02, , 7F
主要是因為有return的關係
04/17 14:02, 7F

04/17 14:18, , 8F
我不太懂這跟 return 有什麼關係...?
04/17 14:18, 8F

04/17 14:50, , 9F
就是一定要能夠跑到return的意思
04/17 14:50, 9F

04/17 16:25, , 10F
就是可能會沒有return值的狀況
04/17 16:25, 10F

04/17 23:32, , 11F
因為你用的敘述是if else if else if 並沒有else就語法
04/17 23:32, 11F

04/17 23:34, , 12F
上而言他並不能判斷出一定會有return值...
04/17 23:34, 12F

04/17 23:41, , 13F
你在if else那堆的body外打個return, error就會消除
04/17 23:41, 13F

04/17 23:42, , 14F
或者多加上一個else return 00xx 也會消除
04/17 23:42, 14F

04/18 01:07, , 15F
因為編譯器只看到if ... else if ... else if ...
04/18 01:07, 15F

04/18 01:09, , 16F
它認為萬一條件都不符合時,這個method就沒有回傳值了
04/18 01:09, 16F

04/18 01:10, , 17F
它沒聰明到知道你的這三個if,把所有情況都考慮到了
04/18 01:10, 17F

05/06 20:31, , 18F
要再加個 else 裡面 return 一個不符合以上情況的結果。
05/06 20:31, 18F
文章代碼(AID): #1BoJidEg (java)
文章代碼(AID): #1BoJidEg (java)