绕进去的死胡同

原创
2017/10/30 00:05
阅读数 25

逻辑改写形式(不能改逻辑改了程序就变了)

疑惑点1---if else的嵌套:

改写1-【内层固定,外层判断】:当遇到两个条件都需要判断的时候,实际上外层的条件判断优先于内层,因为只有满足外层才考虑内层,否则,直接按外层不满足考虑。

改写2-【外层固定,内层判断】:直接对外层情况分类讨论即可,内层直接跟上。

解决方法:

直接从最后一个else往上对if,可以看清逻辑。

    public static void main(String[] args) {

        System.out.println("*a=false***btrue*******");
        boolean a,b;
        a=false;
        btrue(a);
        b=true;
        test(a,b);
        System.out.println("**a=true;*********");
        a=true;
        btrue(a);
        b=true;
        test(a,b);
        System.out.println("****bfalse*******");
        a=false;
        bfalse(a);
        b=false;
        test(a,b);
        System.out.println("*a=true;**********");
        a=true;
        bfalse(a);
        test(a,b);

      /*
*a=false***btrue*******
B
B
**a=true;**btrue*******
a+B
a+B
**a=false**bfalse*******
B
B
*a=true;*bfalse**********
a-B
        */

    }
    private static void test(boolean a,boolean b) {
        if(true==a){
            if(true==b)
            {
                System.out.println("a+B");
            }else{
                System.out.println("a-B");
            }
        }else
        System.out.println("B");
    }
    private static void btrue(boolean a) {
        boolean b;
        b=true;
        if(true==a)
        {
            System.out.println("a+B");
        }else{
            System.out.println("B");
        }

    }
    private static void bfalse(boolean a) {
        boolean b;
        b=false;
        if(true==a)
        {
            System.out.println("a-B");
        }else{
            System.out.println("B");
        }

    }

疑惑点2---else if和if else使用场景:

结论:

 

//两个条件判断最多3个出口
if ( ){   
     情形1;
      }else{if( ){
     情形2;
             }else{
     情形3;
                 }
 }
等价于
if(  ){   
      情形1;
      }else if(  ){ 
  
       情形2;
                  }else{  
       情形3;
      }
}
       public static void testqianzhi(Boolean a,Boolean b){
        if(a==true){
            System.out.println("a is true,not care b");

        }else{
            if(b==true){
                System.out.println("a is false,b is true");
            }else{
                System.out.println("a is false,b is false");
            }
        }
    }
    public static void testqianzhi2(Boolean a,Boolean b){
        if(a==true){
            System.out.println("a is true,not care b");

        }else if(b==true){
                System.out.println("a is false,b is true");
            }else{
                System.out.println("a is false,b is false");
            }
        }

    public static void testhouzhi(Boolean a,Boolean b){
        if(a==false){
            if(b==true){
                System.out.println("a is false,b is true");
            }else{
                System.out.println("a is false,b is false");
            }

        }else {
            System.out.println("a is true,not care b");
        }
    }



    public static void main(String[] args) {
        Boolean a,b;
        a=false;
        b=false;
        
        testhouzhi(a,b);
        testqianzhi(a,b);
        testqianzhi2(a,b);
    }
//输出结果:
a is false,b is false
a is false,b is false
a is false,b is false

 

展开阅读全文
加载中

作者的其它热门文章

打赏
0
0 收藏
分享
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部