看板 java 關於我們 聯絡資訊
public class Test { static int result; public static void main(String[] args) { double x ; if( result == 0 ){ x = 10.0; System.out.println("123"); } System.out.print(x); } } 最後要印出x的值的時候會出現編譯錯誤 說 x 沒有初始化 一開始我懷疑if沒有進入 所以print 123 結果有印出123,表示有進入 然後我把if的條件直接改成true就可以印出x 請問這是什麼原因呢? 先謝謝各位高手的幫忙~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.177.13.6 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/java/M.1595683997.A.969.html
PTTTTTTTT: local variable 沒有初始值 只有class variable有 07/25 21:41
但是我在if裡面有給值了呀 ※ 編輯: awpadam (180.177.13.6 臺灣), 07/25/2020 21:48:37
gasbomb: 你加個else {x = 0.0} 應該就會過了 07/25 22:05
gasbomb: 編譯器只要抓到區域變數有可能尚未初始化就不會讓你過 07/25 22:09
gasbomb: 以你的例子來說 萬一 result != 0, x 就不會初始化 07/25 22:11
原來如此,我了解了。謝謝你的幫忙 ※ 編輯: awpadam (180.177.13.6 臺灣), 07/25/2020 22:14:35
ssccg: 必須是所有路徑都有初始化才叫有初始化 07/25 22:16
你的意思是說所有的分支條件嗎? ※ 編輯: awpadam (180.177.13.6 臺灣), 07/25/2020 22:17:58
swallowcc: 那問你個問題,如果你的 result 不等於零, 你期望double 07/25 22:44
swallowcc: 會印出來什麼東西呢? 07/25 22:44
swallowcc: x才對,不是double,用錯詞。 07/25 22:45
我沒想到java的編譯器這麼嚴格,會幫我考慮其他狀況 蠻貼心的XD ※ 編輯: awpadam (180.177.13.6 臺灣), 07/25/2020 22:58:11