尝试进行冒泡排序时出现java.lang.ArrayIndexOutOfBoundsException错误

时间:2012-03-30 15:43:07

标签: java sorting bubble-sort

我正在尝试进行冒泡排序,这是我的代码:

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)

3 个答案:

答案 0 :(得分:4)

i上升到数组的长度,然后将x设置为超过该数组!因此,您尝试访问超出数组末尾的元素。

您可以在排序代码中使用i < test.length - 1,或者检查以确保您不尝试将最后一个元素与其后的元素交换。

答案 1 :(得分:1)

我认为,在您的内循环中,您希望使用k代替i

答案 2 :(得分:0)

“i = x + 1;”这一行是你的问题。当x,你的计数器是4时,这需要i到5.当你试图获得test [5]的值时,你超出了数组的范围。