下面的代码有一个编译器错误:
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.";
下面的代码有一个编译器错误:
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.";
改成:
// Determine the grade
if (speed >= 150)
speedMsg = "STOP! STOP! Please let me OUT!";
else
speedMsg = "Whew I'll just walk from here Thanks.";
这应该足以让编译器确定变量将被初始化。
放:
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.";
您没有初始化您的字符串,然后尝试返回它。
替换else if
为,else
因为编译器会知道 speedMsg 总是有一个值。
如果或,您speedMsg
可能不会被初始化
。speed >= 150
speed <= 150
尽管很明显速度的所有可能值都在那里,但 Java 无法知道它。如果if else if
您不使用 only if else
,它将被初始化。
或者您需要在声明时初始化为默认错误消息。
错误变量 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(无默认值)。
恕我直言,第二种解决方案更优雅。
请初始化speedMsg:
String speedMsg = null;
那应该可以解决问题,speedMsg 可能未初始化。
您必须包含一个else
语句,因为编译器不够聪明,无法确定您已在and语句中包含了speed
值的所有可能性。if
if else
请注意,局部变量是唯一没有默认值的变量,您需要对其进行初始化。