[英]multiple if statements without else
我不明白为什么会出现编译错误。 在我看来,此方法首先评估n是否>0。在这种情况下,将把“ good”分配给本地的String对象。 但是,如果不是这种情况,那么它将不会做任何事情。 接下来,该方法进入另一个决策构造。 这次,它将评估n <=0。如果是,它将为String对象分配“ bad”。
在这两种情况下,都应初始化local。 但是,出现编译错误,编译器说可能未初始化。 我不知道这是从哪里来的。
请注意,我知道如何通过用else替换并消除布尔条件来纠正第二个问题。 我只是不明白为什么从语法上讲这是不正确的。
public class Donkey{
String s1 = "green";
public void generateReport(int n){
String local;
if(n > 0)
local = "good";
if(n <= 0)
local = "bad";
System.out.println(local);
}
编译器无法“知道”您是否已使用if
语句处理了所有情况。
考虑以下示例(请注意,第二个if
小于):
String local;
if(n > 0)
local = "good";
if(n < 0)
local = "bad";
如果n = 0
,则不会定义local
。
编译器不会测试您的if
语句,以查看它们是否在编译时处理所有情况。
如前所述,将其更改为if/else
将解决该错误。 您还可以像其他用户指出的那样初始化变量。
问题是,如果n
不大于 0
且不小于或等于 0
,则不会初始化var local
。 这就是编译器告诉您的内容。
您可以通过使用一些local
变量来解决此问题。
String local = "";
当您使用else
时,此问题得以解决,因为对于编译器而言,只能有2种可能的状态,一个条件为true ,否则为3,因为else
考虑了所有条件,所以没有可能的第三种状态。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.