2016-10-02 46 views
0

我試過這個問題。我花了很多時間在這個上,但我沒有得到它。只有一個循環的陣列必須使用

問題:給定一個int數組,如果它不包含1或不包含4,則返回true。

no14([1, 2, 3]) → true 
no14([1, 2, 3, 4]) → false 
no14([2, 3, 4]) → true  

    public boolean no14(int[] nums) { 

    for(int i=0;i<nums.length;i++) 
    { 
    if(nums[i]==1 || nums[i]==4) 
    return false; 

    else 
    return true; 
    } 

    return false; 
} 
+0

哪種編程語言? java嗎?你會得到什麼錯誤?什麼不行? – baao

回答

0

試試這個:

public boolean no14(int[] nums) { 

    boolean containsOne = false; 
    boolean containsFour = false; 

    for (int i=0; i<nums.length; i++) { 
     if(nums[i] == 1) { 
      containsOne = true; 
     } 
     if(nums[i] == 4) { 
      containsFour = true; 
     } 
    } 

    if (!containsOne || !containsFour) { 
     return true; 
    } else { 
     return false; 
    } 

} 

(未測試,注重可讀性)

希望它會工作!

0

你在做什麼,檢查是否說,在數組第一個數字是說2,那麼你就返回然後真正有作爲,如果條件犯規得到滿足,並返回真實的形式存在。

取而代之的是,如果您發現數組中的當前元素爲1或4,則只返回false。如果您評估陣列的每個條目,發現你沒有爲1點或4的數組,然後返回true,如:

for(int i=0;i<nums.length;i++){ 
    if(nums[i]==1 || nums[i]==4) { 
     return false; 
    } 
} 
return true; 
0

在循環中刪除else和循環後返回true

public boolean no14(int[] nums) { 
    for(int i=0;i<nums.length;i++) { 
    if(nums[i]==1 || nums[i]==4) return false; 
    } 

    return true; 
}