//对一个数组{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)
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)
{
if(num[i] < num[i+1])i < nCount那么你的num[i]就有可能取到数组的最后一个元素,而num[i+1]当然会OUTOF...
改为
for(int i = 0;i < nCount-1;i++)
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 ,