我不知道为什么这个方法抛出ArrayIndexOutOfBounds异常。binarySearch方法抛出ArrayIndexOutOfBounds异常 - Java
When I change the initial "high"
值为"int high = array.length - 1;"
,程序将return any integer value
,我搜索。
我在做什么错?
在此先感谢!
public class BinarySearch {
public static void main(String[] args) {
int searchValue = 12;
int[] givenNums = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
binarySearch(givenNums, searchValue);
System.out.println("\nResult: " + searchValue);
}
public static int binarySearch(int[] array, int key) {
int low = 0;
int high = array.length;
int mid = (low + high)/2;
int i = 0;
System.out.println();
while (low <= high) {
System.out.print(i + " ");
if (array[mid] < key) {
low = mid + 1;
mid = (low + high)/2;
} else if (array[mid] > key) {
high = mid - 1;
mid = (low + high)/2;
}
else
return mid;
i++;
}
return -1;
}
}
您刚刚* *贴[一个非常类似的问题](http://stackoverflow.com/questions/12827289/的binarySearch-方法投掷-的ArrayIndexOutOfBounds-例外-java的)。你已经被告知为什么会发生这个错误:你不能设置高到'array.length'。让代码无法运行到完成状态并不比输出正确的答案更好(至少在本例中不是这样)。你不是通过将'high'设置为'array.length'而不是'array.length - 1'来解决任何问题,你只会让事情变得更糟。 – NullUserException
@ user1735982 ..看到我的帖子,明白你到底在干什么.. –
不同的方法,不同的问题。 –