【发布时间】:2013-11-29 07:33:36
【问题描述】:
更改 while 循环中的条件顺序会使程序崩溃。如果我这样写:while(a[in-1]>=temp && in>0),程序将无法运行。为什么?错误是:ArrayIndexOutOfBoundsException:-1。在我进行上述更改之前,下面的代码一直有效。
public class ISort {
public int[] sort(int[] a){
int n=a.length;
for(int out=1;out<n;out++){
int temp=a[out];
int in=out;
while(in>0 && a[in-1]>=temp ){
a[in]=a[in-1];
in--;
}
a[in]=temp;
}
return a;
}
public static void main(String[] args){
int[] a={3,2,1,6,3,8,8,10,9};
ISort s=new ISort();
int[] res=s.sort(a);
for(int i=0;i<res.length;i++ ){
System.out.print(" "+res[i]+" ");
}
}
}
【问题讨论】:
-
请附上您收到的错误信息。
-
编程的第一条规则:阅读错误信息。
标签: java loops for-loop while-loop object-oriented-analysis