2013-01-20 78 views
-1

這是我的方法是什麼樣子本地變量的原因可能尚未初始化?

public int abc() 
{ 
    int x; 
    if(x > 100) 
    { 
    //Say ok 
    return x;//Causes compiler error 
    } 

    //if something more, x = some number 

    return x;//Causes compiler error 


} 

我看到在SO答案 - Java: "Local variable may not have been initialized" not intelligent enough?

但是,我仍然不知道爲什麼這個錯誤發生。它是一個編譯器錯誤,而不是一個警告。所以,這個問題肯定比「走一條安全路線」更嚴重。

+0

看看http://stackoverflow.com/questions/415687/why-are-local-variables-not-initialized-in-java – Swapnil

+1

編譯器不夠智能來解決這個問題。它只會檢查讀取變量的所有路徑是否包含初始寫入。 – nhahtdh

+1

好,即使條件是真的,它也不會初始化 –

回答

5

局部變量在被訪問前必須被初始化。這就是爲什麼有編譯器錯誤。

您應該在第一次訪問它的if聲明時必須有錯誤。

+0

(我不確定爲什麼這是低票 - 我只是在扮演編輯:D) – 2013-01-20 08:12:17