我正在尝试进行冒泡排序,这是我的代码:
import java.util.Random;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
double[] test = new double[5];
double t;
//Set random value to each of elements
for(int i = 0;i<test.length;i++){
test[i] = Math.round((100*Math.random()));
System.out.println(test[i]);
}
//Bubble Sort
for(int i = 0;i<test.length;i++){
for(int k = 0;k<test.length-1;k++){
int x = i+1;
if(test[i]>test[x]){
t = test[i];
test[i] = test[x];
test[x] = t;
}
}
}
}
}
但是当我启动它时,它抛出了一个错误:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
at Main.main(Main.java:24)
最佳答案
i
上升到数组的长度,然后设置 x
去一个过去!因此,您尝试访问数组末尾之后的元素。
您可以使用 i < test.length - 1
在排序代码中,或以其他方式检查以确保您不会尝试将最后一个元素与其后的元素交换。
关于尝试进行冒泡排序时出现 java.lang.ArrayIndexOutOfBoundsException 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9946240/