//对一个数组{11,22,55,66,23,66,77,89,1,6}从大到小进行重新排序
public class aa
{
public static void main(String[] args)
{
int nTemp;
int nCount;
int[] num = {11,22,55,66,23,66,77,89,1,6};
nCount = num.length;
for(int i = 0;i < nCount;i++)
{
if(num[i] < num[i+1])
{
nTemp = num[i+1];
num[i+1] = num[i];
num[i] = nTemp;
}
}
for(int i = 0;i < nCount;i++)
{
System.out.print(num[i]);
System.out.print(" , ");
}
}
}
报错是
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
        at aa.main(aa.java:11)

解决方案 »

  1.   

    for(int i = 0;i < nCount;i++)
    {
    if(num[i] < num[i+1])i < nCount那么你的num[i]就有可能取到数组的最后一个元素,而num[i+1]当然会OUTOF...
      

  2.   

    for(int i = 0;i < nCount;i++)
    改为
    for(int i = 0;i < nCount-1;i++)
      

  3.   

    改了,但结果没有全排序
    public class aa
    {
    public static void main(String[] args)
    {
    int nTemp;
    int nCount;
    int[] num = {11,22,55,66,23,66,77,89,1,6};
    nCount = num.length;
    for(int i = 0;i < nCount;i++)
    {
    System.out.print(num[i]);
    System.out.print(" , ");
    }
    System.out.println();
    for(int i = 0;i < nCount-1;i++)
    {
    if(num[i] < num[i+1])
    {
    nTemp = num[i+1];
    num[i+1] = num[i];
    num[i] = nTemp;
    }
    }
    for(int i = 0;i < nCount;i++)
    {
    System.out.print(num[i]);
    System.out.print(" , ");
    }
    }
    }
    结果:
    11 , 22 , 55 , 66 , 23 , 66 , 77 , 89 , 1 , 6 ,
    22 , 55 , 66 , 23 , 66 , 77 , 89 , 11 , 6 , 1 ,
      

  4.   

    java.util.Arrays 不是有sort方法吗