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

标签 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)

最佳答案

i上升到数组的长度,然后设置 x去一个过去!因此,您尝试访问数组末尾之后的元素。

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

关于尝试进行冒泡排序时出现 java.lang.ArrayIndexOutOfBoundsException 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9946240/

相关文章:

java - 为什么Java编译器找不到符号?

java - Launch4j启用远程调试

python - 使用一个列表理解的冒泡排序

c++ - "String Iterators Incompatible"运行冒泡排序程序时的错误信息

java - 尝试弹出警报框以响应 AsyncTask

java - 如何在 Java (OS X) 中实现 CMD + N

sql - strip 化 PostgreSQL 结果集的顺序

java - JList:按顶部/底部按钮排序

matlab - 在matlab上绘制矩阵的点

algorithm - 给定倒排次数的列表的冒泡排序和插入排序的复杂度