m0_53542800 2022-08-25 10:17 采纳率: 75%
浏览 52
已结题

java冒泡排序 , 请各位看看为什么会报错

问题遇到的现象和发生背景
        想请大佬们看下我写的这个冒泡排序哪有问题
问题相关代码,请勿粘贴截图
        public class Bubble_Sort {
public static void main(String[] args) {
    int[] arr = {12, 34, 45 ,56 ,14} ;

    for (int i = 0; i < (arr.length -1); i++) {
        for (int i1 = 0; i1 < (arr.length - i); i1++) {
            if(arr[i1] > arr[i1 + 1]){
                int temp = arr[i1];
                arr[i1] = arr[i1 + 1];
                arr[i1 + 1] = temp ;
            }
        }
    }

    for (int i = 0; i < arr.length; i++) {
        System.out.print(arr[i] + "\t");
    }
}
运行结果及报错内容

D:\Java\JDK\bin\java.exe "-javaagent:D:\java\IDEA\IntelliJ IDEA 2021.2.1\lib\idea_rt.jar=4325:D:\java\IDEA\IntelliJ IDEA 2021.2.1\bin" -Dfile.encoding=UTF-8 -classpath D:\java\java_code\out\production\arr study.Bubble_Sort
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 5 out of bounds for length 5
at study.Bubble_Sort.main(Bubble_Sort.java:9)

我的解答思路和尝试过的方法

在第一个for循环中 , 改为for(int i = 1 ; i <= (arr.lengthh - 1) ; i++) 就可运行

我想要达到的结果

我感觉这两种形式是一样的,但不知道问什么第一个会报错

  • 写回答

4条回答 默认 最新

  • 拧螺丝超强~ 2022-08-25 10:26
    关注

    img


    第二个循环 改成 -1-i 就行了,
    数组索引越界异常,数组下标从0开始的

    本回答被专家选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 9月5日
  • 专家已采纳回答 8月28日
  • 创建了问题 8月25日

悬赏问题

  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 有没有帮写代码做实验仿真的
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题
  • ¥20 yolov5自定义Prune报错,如何解决?