黑马程序员技术交流社区
标题:
if语句判断
[打印本页]
作者:
李燕
时间:
2013-4-8 22:15
标题:
if语句判断
class DemoIf{
public static void main(String[] args){
boolean b = true;
if(b=false)
System.out.println("a");
else if(b)
System.out.println("b");
else if(!b)
System.out.println("c");
else
System.out.println("d");
}
}
//我以为打印的会是b和d,可是运行一下确实c,求高手指点!
作者:
HM马明宇
时间:
2013-4-8 22:22
if(b=false) 这里应该是== 结果才会是b但是不会出d
else if 是在if挑选过之后剩下的可能性中再进行判断的,所以最下面两个判断无意义
你的程序逻辑是(修改后的):
b是假吗?
如果是输出a
否则(注意,这里的b就只剩下一种可能性了,因为上面的if已经剔除一种情况了)
b是真吗?(此时是的)
如果是输出b(此时输出了b)
再往下的判断b已经没有真假值了
作者:
郭彦君
时间:
2013-4-8 22:30
你在if(b=false)里相当于给b重新赋了值,b现在是false了,没起到判断的作用,这句话没什么意义,应该是你少写了=号。输出结果就是c了
作者:
ㄨ____陌生
时间:
2013-4-8 22:32
当执行到这句时候 if(b=false) b就变成true,然后 到 else if(!b) 这句时候才会输出语句、、
if(b=false) 先赋值再判断,实际上可以分两句写
b=true;
if(b)
//也就是if(b==true){}
下面一个就是我们习惯中的等于了
if (b == true) {}
//如果b的值等于true
作者:
Keith
时间:
2013-4-8 22:34
if(b=false) 成了赋值语句 b已经被赋值成false,之后走的就是c了. 你是想判断是否等于,用 ==,但是改成==的话应该走b,也不会走b,d的
作者:
liuyangyang
时间:
2013-4-8 22:35
你好,
楼上说的很对,
class DemoIf{
public static void main(String[] args){
boolean b = true;
if(b=false) //
注意:这里用 "="是将 "false"赋值给了"b", 此时b=false;
System.out.println("a"); // b=fase,所心没打印
else if(b)
System.out.println("b"); //b=fase,没打印
else if(!b) // "!"代表 取反结果的意思 ,假取了反则变为真, 所以打印了下而一句,
System.out.println("c");
else
System.out.println("d");
}
}
boolean型只有二种结果,不必要判断这么多次的。
作者:
U芽Lady
时间:
2013-4-8 22:48
class DemoIf{
public static void main(String[] args){
boolean b = true;
if(b=false) //首先:()这里的值只能是Boolean类型的,不管是赋值,还是比较,系统只看结果,那就是假,不执行后面语句
System.out.println("a");
else if(b) //上面赋值了,b就是false,也就是if(false),假,不执行后面语句
System.out.println("b");
else if(!b)//!b是!false,非假就是真,那么执行后面语句
System.out.println("c");
else
System.out.println("d");
}
}
作者:
ld5128702
时间:
2013-4-8 23:03
太粗心了吧, if(b=false) ,这个应该是==吧,你那是赋值了,先赋值了才判断,所以!b也就是true的时候打印
作者:
曹宇
时间:
2013-4-8 23:38
if(b=false)
这里成了赋值语句了.
应该是 if(b==false)
if(b=false) 将b的值赋成了 false 那么后面就自然而然的输出不是你期望的结果了!
编程多细心.
从结果来分析为什么.
当你认为逻辑上没有错误却给了不是期望的输出,就要检查语句的问题了.
一步一步来 慢慢就能分析到问题所在.
作者:
yangyinhui
时间:
2013-4-8 23:57
public static void main(String[] args) {
boolean b = true;
if (b = false) // 这里对b重新赋值
System.out.println("a");
else if (b)
System.out.println("b");
else if (!b) // 这里!b为true
System.out.println("c");// 这段代码执行
else
System.out.println("d");
}
}
// 所以打印结果为c
复制代码
我认为应该是这样,你重新给b进行了附值,b的值就不再是你想象的true,变为了false,所以得不到你想要的结果
作者:
董霁辉
时间:
2013-4-9 00:21
本帖最后由 董霁辉 于 2013-4-9 00:23 编辑
楼上认为楼主写错了的童鞋们,没有看懂楼主的意思
boolean b = true;
if(b=false) //
1 b被重新赋值为false也就是假的;2 if(假的)括号里面已经是假的了,不会打印 a ;只有if()括号里为真,那么才会执行打印a的语句;
System.out.println("a");
else if(b) //
b仍保持假的;
System.out.println("b");
else if(!b)//
"!"是非的意思,"!b"就是非假,那就是true,打印出c 结束if判断;
System.out.println("c");
else
System.out.println("d");
作者:
牵强的笑掩饰内
时间:
2013-4-9 22:40
if(b=flase)应该写错了改为if(b==flase)否则改变了b
此时b=true的已改为b=flase因此结果为c
作者:
〃Mr.Zぐ
时间:
2013-4-9 22:55
第一句里if(b=false)将b重新给赋值了,java里==才是数学里面的等于。所以第一句b的值是false,不会输出a。
第二句里面因为由于b被重新赋值成为false,if语句不执行,会跳掉下面的第三个语句。
第三句因为!b等于true,因此执行了该语句输出c。然后结束了循环,不会再执行第四句的else。
作者:
梁海君
时间:
2013-4-10 00:21
有收获啦~哈哈
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2