错误:在方法maxDegree和minDegree中缺少return语句

时间:2014-07-08 02:53:06

标签: java

**我收到一个编译错误告诉我,我在方法maxDegree和minDegree中缺少return语句,但我已经有了它们。我不确定如何修复错误。有人可以帮忙吗?*

    private int degree( int i )
    {
        return inDegree(i) + outDegree(i); 
    }

    public int maxDegree()
    {
        int max = 0;

        for( int node = 0; node < g.length; node++ )
        {
            if( degree(node) > max ) 
            {
                return degree(node);
            }
        }
    }

    public int minDegree()
    {
        int min = g.length-1;

        for( int node = 0; node < g.length; node++ )
        {
            if( degree(node) < min ) 
            {
                return degree(node);
            }
        }
    }

} // End Graph Class

2 个答案:

答案 0 :(得分:0)

问题在于,在这两种方法中,如果您未输入if语句,则永远不会到达return。因此,如果您从未到达return中的return语句,则必须在方法的末尾添加if

public int maxDegree()
{
    int max = 0;

    for( int node = 0; node < g.length; node++ )
    {
        if( degree(node) > max ) 
        {
            return degree(node);
        }
    }

    // MISSING A RETURN OF A DEFAULT VALUE HERE
}

public int minDegree()
{
    int min = g.length-1;

    for( int node = 0; node < g.length; node++ )
    {
        if( degree(node) < min ) 
        {
            return degree(node);
        }
    }

    // MISSING A RETURN OF A DEFAULT VALUE HERE
}

编辑这可能是您正在寻找的代码:

public int maxDegree()
{
    int max = degree(g[0]);

    for( int node = 1; node < g.length; node++ )
    {
        if( degree(g[node]) > max ) 
        {
            max = degree(g[node]);
        }
    }

    return max;
}

public int minDegree()
{
    int min = degree(g[0]);

    for( int node = 1; node < g.length; node++ )
    {
        if( degree(g[node]) < min ) 
        {
            min = degree(g[node]);
        }
    }

    return min;
}

答案 1 :(得分:0)

只有在遇到某种情况时才会返回。在每个for循环后返回默认值。