java数组查找索引问题

来源:百度知道 编辑:UC知道 时间:2024/05/25 05:24:29
import java.util.Arrays;

class ExcepTest
{
public static void main(String[] args)
{

int[] num=new int[]{1,8,2};
for(int i=0;i<num.length;i++)
{
System.out.println(num[i]);
}
int index=Arrays.binarySearch(num,2);
System.out.println("索引="+index);
System.out.println("值="+num[index]);

}
}

提示索引=-2
错误提示Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -2
有什么前提条件啊,是不是这个,我在API中找到的。使用二分搜索法来搜索指定数组,以获得指定对象。在进行此调用之前,必须根据指定的比较器(通过 sort(T[], Comparator) 方法)对数组进行升序排序。如果没有对数组进行排序,则结果是不确定的。如果数组包含多个等于指定对象的元素,则无法保证找到的是哪一个。

使用二进制搜索算法来搜索指定的 int 型数组,以获得指定的值。必须在进行此调用之前对数组进行排序(通过上面的 sort 方法)。如果没有对数组进行排序,则结果是不明确的。如果数组包含多个带有指定值的元素,则无法保证找到的是哪一个。

Arrays调用静态binarySearch(T[] t,T search);方法是有前提条件的!
只能对已排好序的数组进行,所以你得先给数组排序:
Arrays.sort(num);

数组索引值错了,我刚试了一下,
int index=Arrays.binarySearch(num,2);
index的值是-2
num[-2]肯定是不对的