Java 如何修复&x201C;缺少返回语句”;在尝试返回数组中的单个对象时是否在for循环中?
我正在为学校做一个项目,要求我们使用数组将“SphereCylinder”对象放入数组中。 SphereCylinder对象由(字符串标签、双倍边缘、双倍高度)组成 我正在尝试创建一个方法,该方法接受一个(stringlabelin)参数,并找到一个与给定参数匹配的spherecylinder对象,然后返回它Java 如何修复&x201C;缺少返回语句”;在尝试返回数组中的单个对象时是否在for循环中?,java,arrays,object,Java,Arrays,Object,我正在为学校做一个项目,要求我们使用数组将“SphereCylinder”对象放入数组中。 SphereCylinder对象由(字符串标签、双倍边缘、双倍高度)组成 我正在尝试创建一个方法,该方法接受一个(stringlabelin)参数,并找到一个与给定参数匹配的spherecylinder对象,然后返回它 public Spherocylinder findSpherocylinder(String labelIn) { for (int i = 0; i &l
public Spherocylinder findSpherocylinder(String labelIn) {
for (int i = 0; i < spObjects; i++) {
if (sList[i].getLabel().equalsIgnoreCase(labelIn)) {
return sList[i];
}
else {
return null;
}
}
}
publicspherocylinder findSpherocylinder(字符串标签){
for(int i=0;i
它给了我一个缺少的return语句,我不知道如何将return移到'for'语句之外。该项目指出,如果没有找到与参数匹配的对象,它必须返回“null”从for循环中删除else,并将return语句放在循环之外
public Spherocylinder findSpherocylinder(String labelIn) {
for (int i = 0; i < spObjects; i++) {
if (sList[i].getLabel().equalsIgnoreCase(labelIn)) {
return sList[i];
}
}
return null;
}
publicspherocylinder findSpherocylinder(字符串标签){
for(int i=0;i
原因是可能存在这样的情况,for循环可能不会运行一次,因此在这种情况下函数无法返回任何内容。编译器检测到这一点,因此给出一个错误。它与python不同,python的默认函数返回None。另一种方法是使用如下还原:
public Spherocylinder findSpherocylinder(String labelIn) {
return sList.stream()
.filter(spherocylinder -> spherocylinder.getLabel().equalsIgnoreCase(labelIn))
.reduce((a, b) -> {
throw new IllegalStateException("Multiple elements: " + a + ", " + b);
})
.get();
}
这将从流中获得唯一匹配的元素,即
NoSuchElementException in case the stream is empty, or
IllegalStateException in case the stream contains more than one matching element.
只要去掉
else
子句(这是错误的,因为它将在第一次失败时返回,而不是在所有失败时返回),并将return null
移动到for
循环之外的循环应该返回一些内容,否则如果调用方法findSpherCylinder时spObjects的值<0,它不会返回任何东西。这些答案之一解决了你的问题吗?如果没有,你能提供更多的信息来帮助回答这个问题吗?否则,请考虑将最能解决你的问题的答案标记为(在上/下投票箭头下的复选标记)。看到和