从FOR循环中提取返回值

时间:2015-01-27 11:44:17

标签: java for-loop return-value

我正在尝试实现一个方法,其返回值被定义到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;
} 

4 个答案:

答案 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)