2012-07-09 114 views
1

全部 - 我已經看過很多類似的問題,但似乎無法解決我的問題。我的問題是,聲明的外部if語句,但一個內部被初始化的變量沒有被在它被定義的同一範圍的變量承認這是我的代碼:編譯錯誤:變量可能未被初始化

String lastP1Boa; //Declared here 

if (ownersBoa == message) { 
    Spinner houseBoa = (Spinner) findViewById(R.id.houseBoa); 
    String housesBoa = houseBoa.getSelectedItem().toString(); 
    Integer lastIntHouseBoa = Integer.parseInt(housesBoa.replaceAll("[\\D]", "")); 

    Spinner hotelBoa = (Spinner) findViewById(R.id.hotelBoa); 
    String hotelsBoa = hotelBoa.getSelectedItem().toString(); 
    Integer lastIntHotelBoa = Integer.parseInt(hotelsBoa.replaceAll("[\\D]", "")); 


    int intLastP1Boa = lastIntHotelBoa * 1500 + lastIntHouseBoa * 100; 
    lastP1Boa = String.valueOf(intLastP1Boa); } //Initialized here 



String p1Total = lastP1Boa; //Error saying that lastP1Boa needs it be initialized 

謝謝所有的時間和希望我已經讓自己清楚!

+0

您的標題和問題描述不正確。該變量被認爲是正確的,但編譯器告訴你它可能沒有初始化,這是真的。所有編譯錯誤都不盡相同。你必須閱讀信息。 – EJP 2012-07-09 01:25:31

+0

我的不好。對不起,我誤導了標題,但我相對新的android,並不知道到底發生了什麼。 – ninge 2012-07-09 01:33:16

回答

0

編譯器報告的問題是,有可能if (ownersBoa == message)將評估爲falselastP1Boa將不會被初始化。將其設置爲等於null(或更適當的默認值),您聲明它。

String lastP1Boa = null; //Declared here 
+0

非常感謝! – ninge 2012-07-09 01:21:14

0

如果更改第一行String lastP1Boa = null;,它應該解決您的編譯錯誤,但你應該確保你處理這種情況該變量爲null的情況。

+0

好的,如果案子爲空,我會確認。非常感謝你的幫助。 – ninge 2012-07-09 01:22:00