我是学生,这是一项练习,这是此方法的目标: 此方法应返回名称与之匹配的Athlete数组的第一个元素 名称参数。如果没有匹配的运动员,则返回null。
出于某种原因,我收到了这个错误,
TestAthletes.java:15: error: missing return statement
}
这是我的代码:
public class TestAthletes{
public static Athlete findAthleteByName(Athlete[] athletes, String name){
for(int i=0; i<athletes.length; i++){
if(name.equals(athletes[i].getName()))
return athletes[i];
else
return null;
}
}
}
无法弄清问题是什么。
答案 0 :(得分:3)
编译器告诉你,如果你有可能到达方法的末尾,那么就没有return语句可以返回任何内容。
并不是说你的代码正在做你想做的事情,但无论如何,你应该放一个return语句,可能是:
return null;
在方法块的末尾。
答案 1 :(得分:2)
你需要在for
循环之后有一个return语句,因为athletes.length
可以是0,这意味着for
循环的主体永远不会被执行。
答案 2 :(得分:1)
我认为你的意思是以下
public class TestAthletes{
public static Athlete findAthleteByName(Athlete[] athletes, String name){
for(int i=0; i<athletes.length; i++){
if(name.equals(athletes[i].getName()))
return athletes[i];
}
return null;
}
}
在原始代码中,如果athletes.length
为0,那么循环永远不会执行,代码到达函数的末尾而不返回任何内容。
另外,我假设您只想在任何迭代中找不到匹配项时返回null
,这就是为什么我在循环之后移动了返回语句。
答案 3 :(得分:1)
您的return null
语句应该在循环之外。目前,如果第一个值不匹配,它将返回null
。
public static Athlete findAthleteByName(Athlete[] athletes, String name){
for(int i=0; i<athletes.length; i++){
if(name.equals(athletes[i].getName()))
return athletes[i];
}
return null;
}
追踪目前发生的事情。您第一次在athletes[0]
循环中测试for
。如果不匹配,则if
失败,执行else
,返回null
。
此外,如果数组长度为0,则for
循环中不会执行任何内容,因此它永远不会return
。