Java Arrays.binarySearch找不到第一个值

问题描述 投票:0回答:1

我需要检查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(而不是零)。

为什么找不到数组中的第一个条目?

java arrays binary-search
1个回答
2
投票

0 =第一位置。如“是的,我找到了您的物品;它在数组的最前面。

负数表示:找不到(如果删除符号并减去1,则您具有必须插入该位置以保持数组排序的位置)。您正在检查“大于0”;您应该检查“大于-1”。

© www.soinside.com 2019 - 2024. All rights reserved.