我正在尝试实现一个方法,其返回值被定义到for循环中。然而,我总是得到日食告诉我,我必须初始化它。但是,如果我这样做,并设置为null,它总是保持为空......我做错了什么?
public String getPoints(String team){
String teamName;
String outcome;
for ( FootballClub club : league )
{
teamName = club.getName();
if ( teamName.trim().toLowerCase().equals( team ) )
{
outcome = ( team + " " + club.getPoints() ) + " Points";
}
}
return outcome;
}
答案 0 :(得分:1)
由于league
集合/数组(无论它是什么),您迭代可能为空,outcome
可能无法初始化(因为在这种情况下永远不会输入循环体)
只需给它一个初始值:
String outcome = null;
答案 1 :(得分:1)
使用它,摆脱额外的变量,当然如果outcome
没有更多的操作:
public String getPoints(String team){
String teamName;
for ( FootballClub club : league )
{
teamName = club.getName();
if ( teamName.trim().toLowerCase().equals( team ) )
{
return ( team + " " + club.getPoints() ) + " Points";
}
}
return "null or some string if .equals( team ) false for all clubs";
}
答案 2 :(得分:1)
由于局部变量未获得默认初始值。必须在使用它们之前对它们进行明确初始化,这就是为什么无辜的 Eclipse 正在尽职尽责地通知您编译错误。
使用null初始化结果,它不会始终为null,如果您在联盟集合中调用了getPoints()的团队,那么您的结果肯定会发生变化。
public String getPoints(String team){
String teamName;
String outcome=null; // Initialization is must
for ( FootballClub club : league )
{
teamName = club.getName();
if ( teamName.trim().toLowerCase().equals( team ) )
{
outcome = ( team + " " + club.getPoints() ) + " Points";
}
}
return outcome;
}
答案 3 :(得分:0)
您还可以使用break
:
if ( teamName.trim().toLowerCase().equals( team ) )
{
outcome = ( team + " " + club.getPoints() ) + " Points";
break;
}
当您期望outcome
价值时,您需要:
if (outcome != null)