【发布时间】:2012-10-10 19:53:28
【问题描述】:
我不知道为什么这个方法会抛出 ArrayIndexOutOfBounds 异常。
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;
}
}
【问题讨论】:
-
你刚刚发布了a very similar question。您已经被告知为什么会发生此错误:您不能将
array.length设置为高。让代码无法运行完成并不比它无法产生正确的答案更可取(至少在这种情况下不是)。将high设置为array.length而不是array.length - 1并不能解决任何问题,只会让事情变得更糟。 -
@user1735982.. 查看我的帖子以了解您到底在做什么..
-
不同的方法,不同的问题。
标签: java exception methods binary-search indexoutofboundsexception