[問題] 一題跟變數初始化有關的問題

作者: awpadam (adam!)   2020-07-25 21:33:15
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
請問這是什麼原因呢?
先謝謝各位高手的幫忙~
作者: PTTTTTTTT (1P8T)   2020-07-25 21:41:00
local variable 沒有初始值 只有class variable有
作者: gasbomb (虛空雷神獸)   2020-07-25 22:05:00
你加個else {x = 0.0} 應該就會過了編譯器只要抓到區域變數有可能尚未初始化就不會讓你過以你的例子來說 萬一 result != 0, x 就不會初始化
作者: ssccg (23)   2020-07-25 22:16:00
必須是所有路徑都有初始化才叫有初始化
作者: swallowcc (guest)   2020-07-25 22:44:00
那問你個問題,如果你的 result 不等於零, 你期望double會印出來什麼東西呢?x才對,不是double,用錯詞。

Links booklink

Contact Us: admin [ a t ] ucptt.com