黑马程序员技术交流社区
标题:
判断&&和||的一个小问题!
[打印本页]
作者:
吴华二
时间:
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