黑马程序员技术交流社区
标题:
if语句的使用问题
[打印本页]
作者:
史政法
时间:
2013-3-26 10:38
标题:
if语句的使用问题
本帖最后由 史政法 于 2013-3-27 18:11 编辑
class Demo
{
public static void main(String[] args)
{
int m=0,n=3;
if(m>0)
if(n>2)
System.out.println("A");
else
System.out.println("B");
}
}
复制代码
为什么没有结果?
而且为什么在if(m>0)这条语句下面敲打两次回车写上int zzz = 5;编译会报错,但是写上System.out.println("随便写点什么");就没事情?
if如果不加大括号,到底属于什么情况?
作者:
邵震
时间:
2013-3-26 10:48
int设定常量应该放在if前面啊 放后面肯定失败
作者:
itserious
时间:
2013-3-26 10:50
class Demo
{
public static void main(String[] args)
{
int m=0,n=3;
if(m>0)
if(n>2)
System.out.println("A");
else
System.out.println("B");
}
}
为什么没有结果?
回答:你的第一个条件为 if(m>0) 而你的m=0,所以m>0就是false,if语句就不会执行了,就不会有结果了。
问题:而且为什么在if(m>0)这条语句下面敲打两次回车写上int zzz = 5;编译会报错,但是写上System.out.println("随便写点什么");就没事情?
回答:你的if(m>0)后面没有加{}表示是一个省略了括号的语句,那么只会执行它下面的第一条语句了。你敲了两个回车,就说明你的if(同>0)下面的第一条语句是空语句,
等效于:if(m>3){}
但是你在第一行写的是System.out.println("随便写点什么");这时就会执行第一行的数据,第一行为System.out.println("随便写点什么");有数据,所以就执行了。
注意:if(){}省略的括号后,只会执行与它紧接触的第一句。
作者:
程宁宁
时间:
2013-3-26 10:53
首先,if语句在不加大括号的情况下,默认执行之后的一个语句;
加了大括号,就执行完大括号里面的所有代码以后再结束.
其次,else要跟离它最近的if配对,也就是说你的代码里else跟if(n>2)是一对.
像你那样写,两条输出语句根本没机会执行到,所以没输出结果.
作者:
123
时间:
2013-3-26 11:03
本帖最后由 王维帝 于 2013-3-26 11:09 编辑
因为你第一个if语句下面没有执行语句,而条件又是错误的,所以不往下运行了。
第二个问题:
应该加上大括号
{ int zzz=5;}
作者:
我手心里的宝
时间:
2013-3-26 11:04
这个问题我也纠结过,哥们if() 不加大括号,地下只能跟一句话,就是一条执行语句而已
至于为啥不运行结果,显而易见你的判断语句,有问题,在看看,
记住if() 不加大括号的事就行了
作者:
李晓峰
时间:
2013-3-26 12:53
本帖最后由 lixiaofeng 于 2013-3-26 12:55 编辑
没有结果是因为第一个if语句条件不满足且没有执行语句,加上int zzz = 5;也不能构成执行语句,所以第一个if语句就不往下执行了;后来你加上执行语句后,系统执行第一个if语句,条件不满足,继续执行第二个if语句,因为条件满足所以有结果。
作者:
史政法
时间:
2013-3-26 20:35
为什么在if(m>0)这条语句下面敲打两次回车写上int zzz = 5;编译会报错,但是写上System.out.println("随便写点什么");就没事情?
这两个不都是语句吗?为什么单独写int zzz = 5;就是挂,单独写System.out.println("随便写点什么");就OK呢?
而且加上大括号后,单独写int zzz = 5;也是OK的,单独写System.out.println("随便写点什么");也OK?
什么情况?
作者:
芦子骐
时间:
2013-3-26 22:13
if语句下面如果没有花括号,那么只执行语句下面的第一句话,第二句则不执行,所以你敲两下回车就相当于if下面什么也没有执行。
class Demo
{
public static void main(String[] args)
{
int m=0,n=3;
if(m>0) //执行到这句的时候,条件不满足,并且没有执行语句,所有这句没有用
if(n>2) //然后开始执行这一句,条件满足
System.out.println("A"); //按说不该没有结果,至少这句应该输出 “A”;
else
System.out.println("B"); //这句没有输出
}
}
作者:
HM谢文辉
时间:
2013-3-26 22:21
else与最近的if搭配。改代码相当于:
class Demo
{
public static void main(String[] args)
{
int m=0,n=3;
if(m>0)
{
if(n>2)
System.out.println("A");
else
System.out.println("B");
}
}
}
复制代码
作者:
蔡陶军
时间:
2013-3-26 22:24
其实很简单 你可以用eclipse编译器设置断点或者逐步编译看就能看出来
作者:
郑晓飞
时间:
2013-3-26 22:54
if后不加大括号仅执行if之后的一行代码,加上大括号判断完后,如果条件满足就会执行大括号内所有内容。
int应该写在if语句前面,写在后面就先读if条件内容,后执行给ZZZ赋值,或者是打印输出的内容。这里你给ZZZ赋值有什么用没看明白
作者:
袁梦希
时间:
2013-3-26 23:11
楼主你好,此题考查的是if语句的特性,你这段代码的if语句后面没有加大括号,
当然你说的没有结果就是因为if条件表达式中的条件不满足,if语句后面的所有语句都不会执行了,除非加上了大括号。
首先我澄清一点,敲俩下回车与不敲回车没有区别的,只能解释为成员变量不能声明在不完整的if语句后面,而输出语句可以。
作者:
疯狂程序
时间:
2013-3-26 23:28
if的使用,如果不加{},默认if下边的语句,你的整个程序都没有加{},所以,对于else会匹配最近的if,所以,第一个if不满足条件什么都没有输出,整个过程和第二个if else 没有关系,我个人认为无论是循环,条件,最重要的是执行语句的顺序
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2