我在Java定义一个数组,然后通过变量输入数组大小,
再用for循环初始化数组,可总显示数组索引超出界限!!
public static void main(String[] args) {
int n;
Scanner s = new Scanner(System.in);
n = s.nextInt();
int[] arr = new int[n];
for (int i = 0; i < arr.length; i++) {
arr[i] = s.nextInt();
}
for (int i = 0; i < arr.length; i++) {
if (arr[i] > arr[i + 1]) {
x = arr[i];
}
}
System.out.println(BinarySearch(arr, x, n));
}
这是其中一部分,我寻思for中i怎么就溢出了,i改为i<n 也不行
我的输入是
7
1 2 3 9 8 6 5
到底是怎么回事?
32行,当i=6时候,i+1就为7,超过了数组的下标。你可以再加个判断条件 : (i+1)<n
32行arr[i+1]现在是arr[6+1],数组索引最大值必须为数组长度-1,即数组是7个元素,最大值的对应的为arr[6],而现在是arr[7],所以越界,要把31行的改成i<arr.length-1