值未在if语句中初始化

时间:2013-04-25 14:19:56

标签: java

以下代码有编译错误:

  

speedMsg might not been initialized

我该如何解决?

String speedMsg;

// Determine the grade
if (speed >= 150)
  speedMsg = "STOP! STOP! Please let me OUT!";
else if (speed <= 150)
  speedMsg = "Whew I'll just walk from here Thanks.";

7 个答案:

答案 0 :(得分:6)

更改为:

// Determine the grade
if (speed >= 150)
    speedMsg = "STOP! STOP! Please let me OUT!";
else
    speedMsg = "Whew I'll just walk from here Thanks.";

这应该足以让编译器确保变量将被初始化。

答案 1 :(得分:1)

else if替换为else,因为编译器会知道speedMsg将始终具有值。

答案 2 :(得分:1)

集:

String speedMsg = "";

或者删除else if,将其更改为else。

if (speed >= 150)
    speedMsg = "STOP! STOP! Please let me OUT!";
else
    speedMsg = "Whew I'll just walk from here Thanks.";

更好的是:

String speedMsg = speed >= 150 ? 
                    "STOP! STOP! Please let me OUT!" :
                    "Whew I'll just walk from here Thanks.";

您没有初始化字符串,然后尝试将其返回。

答案 3 :(得分:0)

请初始化speedMsg:

String speedMsg = null;

这应解决问题, speedMsg可能尚未初始化

答案 4 :(得分:0)

您必须包含else语句,因为编译器不够聪明,无法确定您已在speed和{{1}中包含if值的所有可能性}陈述。

请注意,局部变量是唯一没有默认值的变量,您需要初始化它们。

答案 5 :(得分:0)

如果您的speedMsg可能未初始化 speed >= 150speed <= 150

虽然很明显所有可能的速度值都存在,但Java 无从知晓。 如果您只使用if else if代替if else,则会初始化它。

或者您需要在声明时初始化为默认错误消息。

答案 6 :(得分:0)

  

错误变量speedMsg可能尚未初始化

此错误信息告诉您,变量(此处:speedMsg)可能 null 。因此,如果您设置默认值,则可以解决问题:

String speedMsg = "Speed";

或者你像这样修理它

if (speed >= 150)
    speedMsg = "STOP! STOP! Please let me OUT!";
else
    speedMsg = "Whew I'll just walk from here Thanks.";

你得到消息的原因是,eclipse无法检查“if-else if”块中的比较是否有效,并且将始终设置speedMsg(无默认值)。

恕我直言,第二种解决方案更优雅。