我遇到了我在Eclipse中重复出现的错误。我认为这个错误不应该存在。给定以下嵌套循环:
String conditionlogic;
if(matcher.find())
{
do
conditionogic += matcher.group();
while(matcher.find());
}
else
conditionogic = null;
错误是
可能尚未初始化局部变量conditionlogic。
我的理解是,因为do-while将至少执行一次,所以conditionlogic实际上是用一个或多个matcher.group()值初始化的,否则为null。 我该如何解决这个问题?
答案 0 :(得分:3)
这一行意味着什么:
conditionogic += matcher.group();
这与:
相同conditionogic = conditionogic + matcher.group();
即。它表示:取conditionogic
的值并连接到matcher.group()
。但是当你第一次进入循环时,conditionogic
的值确实是未知的。您必须为此变量指定一些内容,例如空字符串:
String conditionlogic = "";
答案 1 :(得分:0)
由于您使用的是conditionogic += matcher.group();
(+=
运算符),因此您必须使用empth String conditionlogic
初始化""
,如下所示:
String conditionlogic = "";
答案 2 :(得分:0)
您的案例中的问题是+=
运算符。如果变量未初始化,你+=
怎么办?
您可能希望将值初始化为""
。
答案 3 :(得分:0)
如果仔细查看代码,则会尝试将matcher.group()
的结果连接到null
。错误完全有效,您应该将conditionLogic初始化为""
。
然而,目前这不是一个非常好的练习,在循环中连接类似的字符串。正确的方法是:
String conditionLogic = null;
if(matcher.find())
{
StringBuffer sb = new StringBuffer();
do
{
sb.append(matcher.group());
}
while(matcher.find());
conditionLogic = sb.toString();
}