class ArraySelect
{
public static void selectSort(int[] arr)
{
for(int x=0;x<arr.length;x++)
{
for(int y=x+1;x<arr.length;y++)
{
if(arr[x]>arr[y])
{
int temp;
temp = arr[x];
arr[x] = arr[y];
arr[y] = temp;
} }
}
}
public static void printArray(int[] arr)
{
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 main(String[] args)
{
int[] arr = {2,1,5,7,9,8,4};

printArray(arr);//这句打印正常 selectSort(arr);//该句执行提示"main"异常。。为什么????

printArray(arr);// }
}

解决方案 »

  1.   

    public static void selectSort(int[] arr)
        {
            for(int x=0;x<arr.length;x++)
            {
                for(int y=x+1;x<arr.length-1;y++)
                {
                    if(arr[x]>arr[y])
                    {    
                        int temp;
                        temp = arr[x];
                        arr[x] = arr[y];
                        arr[y] = temp;
                    }                        }
            }    
        }数组越界了 
      

  2.   

    public static void selectSort(int[] arr)
      {
      for(int x=0;x<arr.length;x++)
      {
      for(int y=x+1;y<arr.length-1;y++)
      {
      if(arr[x]>arr[y])
      {   
      int temp;
      temp = arr[x];
      arr[x] = arr[y];
      arr[y] = temp;
      }     }
      }   
      }
      

  3.   

    public static void selectSort(int[] arr)
      {
      for(int x=0;x<arr.length;x++)
      {
      for(int y=x+1;y<arr.length;y++)
      {
      if(arr[x]>arr[y])
      {   
      int temp;
      temp = arr[x];
      arr[x] = arr[y];
      arr[y] = temp;
      }     }
      }   
      }
      

  4.   


    class ArraySelect
    {
        public static void selectSort(int[] arr)
        {
            for(int x=0;x<arr.length;x++) //该处用不用x<arr.length-1应该没有多大关系吧,仅仅是多循环了最后一次,是没有结果的。
            {
                for(int y=x+1;y<arr.length;y++)
                {
                ……