首页 > 编程语言 > 详细

插入排序遇到的逻辑短路和逻辑判断always true问题

时间:2019-03-03 18:33:57      阅读:168      评论:0      收藏:0      [点我收藏+]
 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,导致第二次循环时出现下标越界错误。

谨记,不能再犯这种低级错误了!

插入排序遇到的逻辑短路和逻辑判断always true问题

原文:https://www.cnblogs.com/mrlonely2018/p/10466717.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!