必须使用只有一个循环的数组

时间:2016-10-02 15:32:53

标签: arrays

我尝试了这个问题。我花了很多时间在这上面,但我没有得到它。

问题:给定一个int数组,如果它不包含1,则返回true或者它不包含4。

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

3 个答案:

答案 0 :(得分:0)

你正在做的是,检查数组中的第一个数字是否说2,然后你返回true然后因为你的if条件没有得到满足而你在那里返回true形式。

如果您发现数组中的当前元素是1或4,则返回false,而不是循环。如果你评估数组的每个条目并发现你没有1或4的数组,那么返回如下:

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

答案 1 :(得分: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;
}

答案 2 :(得分: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;
    }

}

(未经测试,专注于人类可读性)

希望它能奏效!