Arrays java.lang.ArrayIndexOutOfBoundsException:不工作
为什么我会犯这个错误?我试图在int数组中从小到大排序并打印它,但它不起作用。我得到了这个错误Arrays java.lang.ArrayIndexOutOfBoundsException:不工作,arrays,Arrays,为什么我会犯这个错误?我试图在int数组中从小到大排序并打印它,但它不起作用。我得到了这个错误 Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 10 out of bounds for length 10 at Bubblesort.bubbleSort(Bubblesort.java:26) at Bubblesort.main(Bubble
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 10 out of bounds for length 10
at Bubblesort.bubbleSort(Bubblesort.java:26)
at Bubblesort.main(Bubblesort.java:47)
源代码:
class Bubblesort {
static String arrayToString(int[] arr){
for (int i = 0; i < arr.length ; i++ ){
System.out.print(arr[i]);
System.out.print(",");
}
return null;
}
static int[] randomArray(int n) {
java.util.Random rand = new java.util.Random();
int[] array = new int[n];
for (int i = 0; i < n ; i++ ){
int random = rand.nextInt(99);
array[i] = random;
}
return array;
}
static void bubbleSort(int[] arr){
for ( int i = 0; i < arr.length ; i++ ) {
if ( arr[i] > arr[i+1] ) {
arr[i] = arr[i+1];
arr[i+1] = arr[i];
} else {
arr[i] = arr[i];
}
}
}
public static void main (String[] args) {
int[] test10 = randomArray(10);
int[] test20 = randomArray(20);
int[] test30 = randomArray(30);
arrayToString(test10);
System.out.println("");
arrayToString(test20);
System.out.println("");
arrayToString(test30);
System.out.println("");
bubbleSort(test10);
arrayToString(test10);
System.out.println("");
}
类Bubblesort{
静态字符串arrayToString(int[]arr){
对于(int i=0;iarr[i+1]){
arr[i]=arr[i+1];
arr[i+1]=arr[i];
}否则{
arr[i]=arr[i];
}
}
}
公共静态void main(字符串[]args){
int[]test10=随机数组(10);
int[]test20=随机数组(20);
int[]test30=随机数组(30);
数组字符串(test10);
System.out.println(“”);
数组字符串(test20);
System.out.println(“”);
数组字符串(test30);
System.out.println(“”);
气泡运动(test10);
数组字符串(test10);
System.out.println(“”);
}
您的数组有十个元素,索引范围从0到9
在bubblesort
函数中的for
循环中,迭代所有这些元素,让i
从零变为九
这里要做的第一件事是比较
arr[i]
和arr[i+1]
。当i
是9时,这意味着你试图将arr[9]
与arr[10]
进行比较。但是没有arr[10]这样的东西
。您的数组索引超出范围,因此您试图将bubblesort函数中的ArrayIndexOutOfBoundsException
与arr[i+1]进行比较