我需要检查int []以包含某个值。数组将始终排序。
我发现了一个非常简单的方法,但是我无法使其正常工作。
当我这样做:
int[] numbers=new int[] {6,8,15,16,18,19,25,26,28,29,32};
for(int i=0;i<40;i++) {
int a= (Arrays.binarySearch(numbers, i));
if (a>0)
{
System.out.println("Found: "+i);
}
}
输出为:
Found: 8
Found: 15
Found: 16
Found: 18
Found: 19
Found: 25
Found: 26
Found: 28
Found: 29
Found: 32
如果我在数组的开头添加零,那么它将找到6(而不是零)。
为什么找不到数组中的第一个条目?
0 =第一位置。如“是的,我找到了您的物品;它在数组的最前面。
负数表示:找不到(如果删除符号并减去1,则您具有必须插入该位置以保持数组排序的位置)。您正在检查“大于0”;您应该检查“大于-1”。