为什么我得到了一个缺失的退货声明"错误?

时间:2017-07-25 20:19:27

标签: java

如果数组中前4个元素之一是9,则该方法应返回true。数组长度可能小于4.在我的方法中,由于某种原因,我一直得到"缺少返回陈述错误"。

public boolean arrayFront9(int[] nums) {
   if (nums.length < 4) {
    int counter = 0;
     while (counter != nums.length) {
      if (nums[counter] == 9) {
        return true;
      }else{
        counter = counter + 1;
      }
    } if (counter > nums.length) {
      return false;
    }
  }else{
    int counter = 0;
    while (counter <= 4) {
      if (nums[counter] == 9) {
        return true;
      }else{
       counter = counter + 1;
      } if (counter > 4) {
        return false;
      }
    }
  }
}

`

我理解我必须确保无论代码有什么返回值,但是给定if和else语句,数组的长度小于4或大于或等于4,所以无论呈现什么数组,它都应该进入这些条件之一?

2 个答案:

答案 0 :(得分:0)

尝试这个

public boolean arrayFront9(int[] nums) {
        boolean result = false;
           if (nums.length < 4) {
            int counter = 0;
                while (counter != nums.length) {
                      if (nums[counter] == 9) {
                          result= true;
                        return result;
                      }else{
                        counter = counter + 1;
                      }
                } 

                if (counter > nums.length) {
                     result= false;
                        return result;
                    }
          } else{
                int counter = 0;
                    while (counter <= 4) {
                      if (nums[counter] == 9) {
                          result= true;
                            return result;
                          }
                      else{
                       counter = counter + 1;
                      } 
                    if (counter > 4) {
                        result= false;
                        return result;
                  }
                }
              }
        return result;
        }

实际上你并没有在方法中返回任何内容,而是返回if / else。

答案 1 :(得分:0)

正如评论所说,你的一个代码路径没有返回值。

这更简单。

public boolean containsNine()
{
    int maxCount = array.length < 4 ? array.length : 4;

    for (int i = 0; i < maxCount; i++)
    {
        if (array[i] == 9)
        {
            return true;
        }
    }

    return false;   
}