Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何修复&x201C;缺少返回语句”;在尝试返回数组中的单个对象时是否在for循环中?_Java_Arrays_Object - Fatal编程技术网

Java 如何修复&x201C;缺少返回语句”;在尝试返回数组中的单个对象时是否在for循环中?

Java 如何修复&x201C;缺少返回语句”;在尝试返回数组中的单个对象时是否在for循环中?,java,arrays,object,Java,Arrays,Object,我正在为学校做一个项目,要求我们使用数组将“SphereCylinder”对象放入数组中。 SphereCylinder对象由(字符串标签、双倍边缘、双倍高度)组成 我正在尝试创建一个方法,该方法接受一个(stringlabelin)参数,并找到一个与给定参数匹配的spherecylinder对象,然后返回它 public Spherocylinder findSpherocylinder(String labelIn) { for (int i = 0; i &l

我正在为学校做一个项目,要求我们使用数组将“SphereCylinder”对象放入数组中。 SphereCylinder对象由(字符串标签、双倍边缘、双倍高度)组成

我正在尝试创建一个方法,该方法接受一个(stringlabelin)参数,并找到一个与给定参数匹配的spherecylinder对象,然后返回它

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,它不会返回任何东西。这些答案之一解决了你的问题吗?如果没有,你能提供更多的信息来帮助回答这个问题吗?否则,请考虑将最能解决你的问题的答案标记为(在上/下投票箭头下的复选标记)。看到和