从 FOR 循环中提取 return 值

Extract return value from FOR loop

我正在尝试实现一种方法,其 return 值被定义到 for 循环中。然而,我总是得到日食告诉我我必须初始化它。但如果我这样做,并将其设置为 null,它始终保持为 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;
} 

由于您迭代的 league Collection/array(无论它是什么)可能是空的,outcome 可能不会被初始化(因为永远不会进入循环体在这种情况下)。

给它一个初始值:

String outcome = null;

使用这个,摆脱额外的变量,当然如果没有更多的操作 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";
} 

您也可以使用 break:

if ( teamName.trim().toLowerCase().equals( team ) )
{
     outcome = ( team + "  " + club.getPoints() ) + " Points";          
     break;
} 

当您期望 outcome 值时,您需要: if (outcome != null)

因为局部变量没有给出默认初始值。它们必须在使用前显式初始化,这就是为什么您无辜的 Eclipse 正在尽其职责通知您有关编译错误的原因。

用 null 初始化 outcome ,它不会总是 null ,如果你调用 getPoints() 的球队出现在 league collection 那么你的结局肯定会改变。

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;
}