A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

import java.util.Arrays;

public class ArraysTest {
        public static void main(String[] args) {
                int[] arr = {15,59,86,57,11};
               
                System.out.println("排序前:");
                System.out.println(Arrays.toString(arr));
               
                //排序
                bubbleSort(arr);
               
                System.out.println("排序后:");
                System.out.println(Arrays.toString(arr));
        }
       
        public static void bubbleSort(int[] arr){
                //外层循环用来控制比较的次数
                for (int i = 0; i < arr.length-1; i++) {
                        //i=0,1,2,3

                        for (int j = 0; j < arr.length; j++) {
                                //j=0,1,2,3
                                //arr[j] 和 arr[j+1]
                                //   0       1
                                //   1       2
                                //   2       3
                                //   3       4   
                               
                                if (arr[j] > arr[j+1]) {
                                        //两个数交换
                                        int temp = arr[j];
                                        arr[j] = arr[j+1];
                                        arr[j+1] = temp;
                                }
                        }
                }
               
        }
}




控制台为什么会报那样的错误啊,怎么修改?大神们!

QQ图片20151025205432.png (8.76 KB, 下载次数: 4)

QQ图片20151025205432.png

5 个回复

倒序浏览
数组长度超限了;
for (int j = 0; j < arr.length; j++)     这里应该是 j<arr.length()-1,不然你后面arr[j] = arr[j+1]中j+1就超限了。

点评

谢了!  发表于 2015-10-26 11:29
回复 使用道具 举报
下标越界  楼上正解
回复 使用道具 举报
for (int j = 0; j < arr.length; j++) 改为arr.length-1
回复 使用道具 举报
南烟 发表于 2015-10-26 11:56
for (int j = 0; j < arr.length; j++) 改为arr.length-1

Thank You !
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马