【问题标题】:Compilation error: variable may not have been initialized编译错误:变量可能尚未初始化
【发布时间】:2012-07-09 01:15:17
【问题描述】:

所有-我已经查看了很多与此类似的问题,但似乎无法解决我的问题。我的问题是,在 if 语句之外声明但在 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  

感谢大家的宝贵时间,希望我已经说清楚了!

【问题讨论】:

  • 您的标题和问题描述不正确。变量可以识别,但是编译器告诉你它可能还没有初始化,这是真的。所有的编译错误都不一样。您必须阅读该消息。
  • 我的错。对不起,我误导了标题,但我是相对论的新手,不知道到底发生了什么。

标签: java android if-statement scope


【解决方案1】:

编译器报告的问题是if (ownersBoa == message) 有可能评估为false 并且lastP1Boa 不会被初始化。将其设置为等于您声明它的null(或更合适的默认值)。

String lastP1Boa = null; //Declared here

【讨论】:

    【解决方案2】:

    如果您将第一行更改为String lastP1Boa = null;,它应该会修复您的编译错误,但您应该确保处理该变量为null 的情况。

    【讨论】:

    • 好的,如果案例为空,我会确保捕获。非常感谢您的帮助。
    猜你喜欢
    • 2013-05-14
    • 1970-01-01
    • 2016-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多