具有数组且具有另一个数字

时间:2018-03-07 08:32:47

标签: java arrays search methods

public static boolean mystery(int[] array, int target) {
   for(int i = 0; i < array.length; i++) {
      if(array[i] == target) 
         return true;
      else if(array[i] > target)
         return false;
   }
   return false;
}

int a[] = {2,5,11,14,15,27,31}

1)mystery1(a,5)会返回什么?

enter image description here

所以这是我朋友的工作。我的问题与问题#1有关。它接受数组并且目标将等于5.因此对于for循环中的第一个循环的i = 0,它将返回false,不是吗?它只会在i = 1时返回true,因此它将是a = 5且target = 5并返回true。但是一旦它再次循环,因为“i ++”它最终会不会返回false?因为他说得对,但我不确定我是错了还是他做错了。不太确定如何运行

2 个答案:

答案 0 :(得分:0)

答案确实是 true

该方法搜索目标,并且只有当前迭代中的元素大于目标或迭代到达数组末尾时才返回 false

由于数组是有序的,因此您不能将更大的元素作为目标之前的目标。因此,一旦循环到达目标,它返回 true ,但如果数组不包含它,即到达数组的末尾或找到一个更大的数字作为目标,它返回

在您的情况下:目标位于数组中,因此结果为 true

答案 1 :(得分:0)

确实如此。

第一次数组[i]是2,所以不是这样。然而,目标(5)也不大于(>),因此循环继续。

第二个循环,数组[i]等于目标,因此返回true。

澄清

阵列看起来像这样。 {2,5,11,14,15,27,31}。 循环的第一次迭代采用array [i](i为0),它给出数字2.因此条件不成立。第二个条件也不正确,因为2小于目标,即5。

第二次使用array [i](i为1)给出数字5.这意味着条件为真且方法返回true。

聚苯乙烯。你忘了添加方法中使用的数组(我从图片中查看了它)。