1 private static void InsertionSort(){ 2 Scanner sc = new Scanner(System.in); 3 for(int i=0;i<6;i++){ 4 array[i] = sc.nextInt(); 5 } 6 int a=array.length; 7 for(int i=1;i<a;i++){ 8 int j=i-1; 9 System.out.println(j+" "+i); 10 int temp = i; 11 while(array[temp]<array[j]&&j>=0){ 12 int b = array[j]; 13 array[j]=array[temp]; 14 array[temp] = b; 15 temp=j; 16 j--; 17 } 18 } 19 for(int i=0;i<6;i++){ 20 System.out.print(array[i]+" "); 21 } 22 }
此处第11行while的判断中,IDEA会出现always true的提示:
并且测试出现下标越界的错误:
原因在于左边的array[j]编译时已经判断了j非负,后面逻辑短路导致always true。
j--之后变为-1,导致第二次循环时出现下标越界错误。
谨记,不能再犯这种低级错误了!