首页 > 解决方案 > 缺少return语句,但是return语句在那里?

问题描述

我有一个嵌套在 for 循环中的 if/else 循环,这段代码说它缺少一个 return 语句:

  public int size()
  {
      //Count until you find a place in the array that is empty, then return the number
      int count = 0;
      for (int i = 0; i < theArray.length; i ++)
      {
          count ++;
          if (theArray[i] == 0)
          {
              return count;
          }
          else
          {
                 return 0;
          }
      }
  }

但是,如果我像这样移动退货声明:

  public int size()
  {
      //Count until you find a place in the array that is empty, then return the number
      int count = 0;
      for (int i = 0; i < theArray.length; i ++)
      {
          count ++;
          if (theArray[i] == 0)
          {
              return count;
          }
      }
      return 0;
  }

错误消失了,但它没有给出正确的计数。

标签: java

解决方案


如果theArray.length为零,则根本不会执行循环体,也不会执行任何返回语句。

此外,您的逻辑似乎有点奇怪,似乎没有理由使用局部count变量。首先,您必须决定如果没有空格或数组根本没有空格(长度为 0),该方法应该返回什么。我建议-1为这两种情况返回。如果目标是返回第一个空格的索引(这也将是第一个空格之前的非空格数的计数),您可以尝试:

public int size(int[] array) {
    for (int i = 0; i < array.length; i++) {
        if (array[i] == 0) {
            return i;
        }
    }
    return -1;
}

推荐阅读