2017-07-25 113 views
0

如果数组中前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; 
     } 
    } 
    } 
} 

`

我明白我必须确保,无论什么代码已经具备一定的返回值,但如果和else语句给出数组的长度或者是小于4或者大于或等于4,那么无论呈现什么数组,它都应该输入这些条件之一?

+7

所有的返回值都在if语句中,并且编译器确定您有可能返回任何内容的逻辑路径。在方法的末尾添加一个默认的return语句。 –

+1

Java不会查看while/if的条件,以查看它们可以编译多少次。它所知道的是,“一个while循环可能执行0-N次”,等等 – yshavit

回答

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。

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; 
}