A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 吴华二 中级黑马   /  2012-3-22 14:36  /  2223 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

//&&:当左边为false,时右边可以不判断,但是左边为true时,右边要判断
          int x =0,y = 0,i = 10,j = 20;
      if(i >0 && j >15){// i >0为true ,接着判断j>15也为true
              x++;//这里x=1
              System.out.println("x="+x);//打印出也是x=1
      }
      if(i >10 || j >15){//i >10为false ,接着判断j>15为true,结果还是为true
              y++; //y=1
              System.out.println("y="+y);//打印出也是y=1
      }
回复 使用道具 举报
                int x =0,y = 0,i = 10,j = 20;
                if(i >0 && j >15){
                        x++;
                        System.out.println("x="+x);
                }
                if(i >10 || j >15){
                        y++;
                        System.out.println("y="+y);
                }

麻烦哪个知道原理的给我讲一下,我觉得第一句判断应该是不执行的,可是为什么结果是x= 1,y =1,我实是不解...

10 个回复

倒序浏览
补充一点,第一个if语句是i>10 && j>15
回复 使用道具 举报
同学,你是不是代码写错了,第一个if语句是i>10 && j>15,本来就不执行
回复 使用道具 举报
就是不执行啊,重新编译一下试试
回复 使用道具 举报
为什么不执行?
i = 10,j = 20;难道不满足(i >0 && j >15)吗?
回复 使用道具 举报
施俊 中级黑马 2012-3-22 15:37:13
7#
如果第一个if中是i>10的话,确实是不执行的,在我这里实验结果是y=1
回复 使用道具 举报
唐朋 初级黑马 2012-3-22 16:32:18
8#
int x =0,y = 0,i = 10,j = 20;
                if(i >0 && j >15){    //执行此处时i是10,j是20,判断是true,所以会执行下面的
                        x++;
                        System.out.println("x="+x);
                }
                if(i >10 || j >15){
                        y++;
                        System.out.println("y="+y);
                }

回复 使用道具 举报
&& 只要有一个flase结果就为flase
||   只要有一个true结果就为true

顺便附送一个
&&与&区别:if(i >0 && j >15)【&&只要左边为flase右边不运算】
| |  与|区别:if(i >0 | | j >15) 【| |只要左边为true右边不运算】
回复 使用道具 举报
袁野 黑马帝 2012-3-23 07:34:45
10#
   if(i >0 && j >15){
  if(i >10 || j >15){

都满足条件 ,if语句只执行一次 所以 x ,y =1
回复 使用道具 举报
本帖最后由 江远云 于 2012-3-23 09:27 编辑

一楼是这样的:int x =0,y = 0,i = 10,j = 20;
                if(i >0 && j >15){
                        x++;
                        System.out.println("x="+x);
                }
                if(i >10 || j >15){
                        y++;
                        System.out.println("y="+y);
                }

二楼楼主要补充:补充一点,第一个if语句是i>10 && j>15
结果就变成:
                int x =0,y = 0,i = 10,j = 20;
                if(i>10 && j>15){
                        x++;
                        System.out.println("x="+x);
                }
                if(i >10 || j >15){
                        y++;
                        System.out.println("y="+y);
                }

问题:麻烦哪个知道原理的给我讲一下,
原理:&&:左边为flase右边就不运算,有一个为flase结果就为flase。
        ||:左边为true右边就不运算, 有一个为true结果就为true,

我觉得第一句判断应该是不执行的
int x =0,y = 0,i = 10,j = 20;
                if(i>10 && j>15){        //左边i>10为flase,不运算,所以你觉得第一句判断应该是不执行是对的。原因有可能是写成一楼的语句了。
                        x++;
                        System.out.println("x="+x);
                }
if(i >10 || j >15){        //左边i>10为flase,右边还要运算:右边有一个true,结果就为true
                        y++;
                        System.out.println("y="+y);
                }
可是为什么结果是x= 1,y =1,我实是不解...
淡定点就知道了,写成两个不同的语句哦
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马