黑马程序员技术交流社区
标题:
帮忙解决!谢谢!
[打印本页]
作者:
黑马张平
时间:
2012-3-10 21:36
标题:
帮忙解决!谢谢!
class ArrayTest02
{
public static void main(String[] args)
{
int[] arr = new int[]{0,7,18,5,6,9,8,4,10,12,14,16};
printarr1(arr);
bubbleSort(arr);
printarr1(arr);
}
public static void printarr1(int[] arr)
{
System.out.print("[");
for (int x = 0 ;x < arr.length ;x++ )
{
if (x!=arr.length-1)
{
System.out.print(arr[x]+",");
}
else
System.out.println(arr[x]+"]");
}
}
public static void bubbleSort(int[] arr)
{
for (int x = 0;x <arr.length-1 ;x++ )
{
for (int y = 0;y<arr.length-x ;y++ )
{
if (arr[y]>arr[y+1])
{
int temp = arr[y];
arr[y]=arr[y+1];
arr[y+1]=temp;
}
}
}
}
}
出现Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 12
at ArrayTest02.bubbleSort(ArrayTest02.java:30)
at ArrayTest02.main(ArrayTest02.java:7)
作者:
倪鹏博
时间:
2012-3-10 22:03
本帖最后由 倪鹏博 于 2012-3-10 22:05 编辑
bubbleSort中的 for (int y = 0;y<arr.length-x ;y++ )
y<arr.length-x改成y<arr.length-x-1
不减1的情况下,x=y=0的时候,y=arr.length-1<arr.length-x,但是y+1就越界了
作者:
付鹏
时间:
2012-3-10 22:54
ArrayIndexOutOfBoundsException 这个异常的意思是用非法的索引访问数组,也就是你的30行代码if (arr[y]>arr[y+1])有越界问题发生了了。。刚才我看了看,当循环第一次的时候 按正常的道理来说 当执行第一次外循环的时候执行到 for (int y = 0;y<arr.length-x ;y++ )的时候你此时的x值为0也就是,当y<arr.length就执行循环 此时你的if (arr[y]>arr[y+1])里面的arr[y+1])已经越界,所以抛出 ArrayIndexOutOfBoundsException异常,,我刚才看了看 你是想做选择排序哈, 其实你把
for (int y = 0;y<arr.length-x ;y++ )
{
if (arr[y]>arr[y+1])
{
int temp = arr[y];
arr[y]=arr[y+1];
arr[y+1]=temp;
}
}
这段改成这样
for (int y = x+1;y<arr.length ;y++ )
{
if (arr[x]>arr[y])
{
int temp = arr[y];
arr[y]=arr[x];
arr[x]=temp;
}
}
作者:
贠(yun)靖
时间:
2012-3-11 00:31
public static void bubbleSort(int[] arr)
{
for (int x = 0;x <arr.length-1 ;x++ )
{
for (int y = 0;y<arr.length-x ;y++ ) 这里数组越界啦, 假设x=0时 y<arr。length 进行内循环 y=arr。length-1时 y+1是不是就超过数组大小了呢 { 所以在后面再减1就可以了
if (arr[y]>arr[y+1])
{
int temp = arr[y];
arr[y]=arr[y+1];
arr[y+1]=temp;
}
}
}
作者:
lucky_xingxing
时间:
2012-3-11 09:27
你这个是数组下表越界的异常了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2