**我收到一个编译错误告诉我,我在方法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
答案 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循环后返回默认值。