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)会返回什么?
所以这是我朋友的工作。我的问题与问题#1有关。它接受数组并且目标将等于5.因此对于for循环中的第一个循环的i = 0,它将返回false,不是吗?它只会在i = 1时返回true,因此它将是a = 5且target = 5并返回true。但是一旦它再次循环,因为“i ++”它最终会不会返回false?因为他说得对,但我不确定我是错了还是他做错了。不太确定如何运行
答案 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。
聚苯乙烯。你忘了添加方法中使用的数组(我从图片中查看了它)。