你好,我正在写一个数组排序。这里给出一个错误:
n = arr[i];
这是代码本身:
public class Main {
public static void main(String[] args) {
int[] arr = { 1, 2, 3, 4, 5};
int n = 0;
int i = 0;
int a = 0;
for(i = arr.length; i >= 0; i--){ // i = 4
while(i>=0) { // i=>0
a++; // 1, 2, 3 ,4
for (i = i; i<=arr.length-a; i--){ // i<= 4, 3, 2 , 1, 0
n = arr[i]; // n = 5
arr[i] = arr[i--]; // arr[4] = 4
arr[i--] = n; // arr[3] = 5
}
}
}
for(int s = 0; s<=arr.length; s++) {
System.out.println(arr[s]); // 5 4 3 2 1
}
}
这是错误本身:
Quote: 线程“主” java.lang.ArrayIndexOutOfBoundsException 中的异常:5
我意识到数组索引有问题。所以它似乎是数组的最后一个元素,也就是在我的例子中,arr[4] = arr[arr.lenght],或者不是?
不,不是这样。
arr.lenght
将返回数组的长度,如果数组至少有 1 个元素,则其长度为 1 而不是零。因此,在您的情况下,它
arr.lenght
返回 5,并且数组索引是从 0 到 4。循环中的错误
for(i = arr.length; i >= 0; i--)
以及for(int s = 0; s<=arr.length; s++)
由于数组的维度。arr.length是数组的长度,数组中的编号从0开始。正确的代码是:for(i = arr.length - 1; i >= 0; i--)
和for(int s = 0; s < arr.length; s++)