我执行这段java 冒泡排序程序出现错误了,怎么回事啊

如题所述

数组角标越界错误,因为当i=0时,j可以取到5,此时j+1的取值会超出数组长度(你这个题目中数组长度为6,j+1可以取到6,但数组的角标只有0、1、2、3、4、5),所以会越界,只需要将内层for循环中的限制条件改为j<arr.length-i-1就好了!追问

现在的结果是这个
>4>12>1>90>32>50

追答

刚才就看了一下你为什么越界。把你if语句后面括号中交换位置的代码这样改:
int temp = arr[i];
arr[i]=arr[j+1];
arr[j+1]=temp;
这样改过之后排序就没问题了!

追问

知道这么改了,array[j]>array[j+1]

追答

  for (int i = 0; i arr[j+1]){
  int temp = arr[i];
  arr[i] = arr[j+1];
  arr[j+1] = temp;
   }
   }
}
for循环这样写就行了

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-03-16
数组超范围访问了。当j=length-1时已经是数组的最后一个元素,j+1就超范围了。