4 回答
已采納

onemoo
TA貢獻(xiàn)883條經(jīng)驗 獲得超454個贊
關(guān)鍵不在 b 沒有初值!
就像你在前面回答中的疑問“我的if結(jié)構(gòu)不能將b初始化嗎?我在if對b進(jìn)行了賦值了,為什么不可以呢?”
你想得沒錯。變量 b 在定義時沒有初始化,但后面 if 結(jié)構(gòu)將 b 初始化了的話是沒問題的!
但問題的關(guān)鍵是:你這個 if 結(jié)構(gòu)過于復(fù)雜,編譯器無法判斷出是否存在所有分支都跳過的可能性,所以它認(rèn)為存在 b 未初始化的風(fēng)險而報錯。
如果你把最后一個分支加上 else 語句(同時也在其中賦予 b 適合的值),編譯器可能就不會報錯了。因為很容易就能推斷出 if else 這樣的結(jié)構(gòu)中至少有一個分支會被執(zhí)行。
當(dāng)然這原因很可能是編譯器相關(guān)的。不過在可能的情況下,明確給予每個變量合適的初值確實是個好習(xí)慣。

BekeyChao
TA貢獻(xiàn)8條經(jīng)驗 獲得超8個贊
我建議你把方法改一下
public?double?price(double?a)?{ ????if?(a?>=?200)?{ ????????return?0.85?*?a; ????}?else?if(a?>=?100)?{ ????????return?0.95?*?a; ????}?else?{ ????????return?a; ????} }
有確定的返回值時最好直接返回
添加回答
舉報
0/150
提交
取消