2012-07-09 128 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