黑马程序员技术交流社区

标题: 判断&&和||的一个小问题! [打印本页]

作者: 吴华二    时间: 2012-3-22 14:36
标题: 判断&&和||的一个小问题!
                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,我实是不解...
作者: 吴华二    时间: 2012-3-22 14:37
补充一点,第一个if语句是i>10 && j>15
作者: 周建    时间: 2012-3-22 14:59
同学,你是不是代码写错了,第一个if语句是i>10 && j>15,本来就不执行
作者: 张明星    时间: 2012-3-22 15:19
就是不执行啊,重新编译一下试试
作者: 陈汉帆    时间: 2012-3-22 15:19
为什么不执行?
i = 10,j = 20;难道不满足(i >0 && j >15)吗?
作者: 施俊    时间: 2012-3-22 15:37
如果第一个if中是i>10的话,确实是不执行的,在我这里实验结果是y=1
作者: 唐朋    时间: 2012-3-22 16:32
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);
                }


作者: 黄或俊    时间: 2012-3-22 16:55
&& 只要有一个flase结果就为flase
||   只要有一个true结果就为true

顺便附送一个
&&与&区别:if(i >0 && j >15)【&&只要左边为flase右边不运算】
| |  与|区别:if(i >0 | | j >15) 【| |只要左边为true右边不运算】

作者: 袁野    时间: 2012-3-23 07:34
   if(i >0 && j >15){
  if(i >10 || j >15){

都满足条件 ,if语句只执行一次 所以 x ,y =1
作者: 张锦萍    时间: 2012-3-23 08:44
//&&:当左边为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
      }

作者: 江远云    时间: 2012-3-23 09:23
本帖最后由 江远云 于 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,我实是不解...
淡定点就知道了,写成两个不同的语句哦





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2