黑马程序员技术交流社区

标题: 编译没问题但是运行排序功能出错 [打印本页]

作者: wang710591943    时间: 2016-4-24 18:41
标题: 编译没问题但是运行排序功能出错
D:\JAVA\day6>javac Arraytool.java

D:\JAVA\day6>javac ArrayDemo.java

D:\JAVA\day6>java ArrayDemo
[6,2,5,7,9,4,2]
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 7
        at ArrayTool.swap(Arraytool.java:51)
        at ArrayTool.selectSort(Arraytool.java:32)
        at ArrayDemo.main(ArrayDemo.java:8)

D:\JAVA\day6>
这个是cmd里面显示的,编译已经成功了,但是运行出现错误。
class  ArrayDemo
{
        public static void main(String[] args)
        {
                int[] arr={6,2,5,7,9,4,2,};
                ArrayTool tool=new ArrayTool();
                   tool.printArray(arr);
                tool.selectSort(arr);
                tool.printArray(arr);
        }
}
这个是我的主函数。第一个打印数组成功打印。第二步出现错误。是一个选择排序功能,
class  ArrayTool
{
        public int getMax(int[] arr)
        {
                int  max=0;
                for(int x=1;x<arr.length;x++)
                {
                        if (arr[x]>arr[max])
                                max=x;
                }
                        return arr[max];
        }
        public  int getMin(int[] arr)
        {
                int  min=0;
                for(int x=1;x<arr.length;x++)
                {
                        if (arr[x]<arr[min])
                        {
                                min=x;
                        }
                }
                        return arr[min];
        }
        public void selectSort(int[] arr)
        {
                for (int x=0;x<arr.length-1 ;x++ )
                {
                        for (int y=x+1;y<arr.length ;y++ )
                        {
                                if(arr[x]>arr[y])
                                        swap(arr,x,y);
                        }
                }
        }
        public void bubbleSort(int[] arr)
        {
                for (int x=0;x<arr.length-1 ;x++ )
                {
                        for (int y=0;y<arr.length-x-1 ;y++ )
                        {
                                if(arr[y]>arr[y+1])
                                        swap(arr,y,y+1);
                        }
                }
        }
        public void swap(int[] arr,int a,int b)
        {
                int temp=arr[a];
                arr[a]=arr[b];
                arr[b]=arr[temp];
        }
        public void printArray(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]+"]");
            }
        }
}
这是另一个类,分别在两个文件,这两个文件夹在一起,getMax,getMin,功能都可以使用,唯独使用选择排序和冒泡排序时出现命令行中的错误,求大神搭救!!!!!!!!!!!!!!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2