以下代码有编译错误:
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.";
答案 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 >= 150
或speed <= 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(无默认值)。
恕我直言,第二种解决方案更优雅。