2017-07-25 8 views
0

このメソッドは、配列の最初の4つの要素の1つが9の場合、trueを返します。配列の長さは4未満です。何らかの理由で、私のメソッドで、 "return文のエラーがありません"が表示され続けます。「返品明細書がありません」というエラーが表示されるのはなぜですか?

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以上であるため、どの配列が提示されても、これらの条件の1つを入力する必要があります。

+7

あなたのリターンのすべては、if文の中で、コンパイラはあなたが何も返されないされる可能性が論理的な経路を持っていると判断しました。メソッドの最後にデフォルトのreturnステートメントを追加します。 –

+1

Javaはwhile/ifの条件を調べてコンパイルする回数を確認しません。知っているのは、 "whileループは0-N回実行する"などです。 – yshavit

答えて

0

はこの1

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

が実際にあなたが方法ではなく、あなたの場合/他には何も返さないされてみてください。

0

コメントとして、コードパスの1つは値を返しません。

これははるかに簡単です。

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; 
} 
関連する問題