黑马程序员技术交流社区

标题: 一个小知识点折腾我好久 [打印本页]

作者: dreamseekerkun    时间: 2014-8-26 10:53
标题: 一个小知识点折腾我好久
本帖最后由 dreamseekerkun 于 2014-8-26 12:35 编辑


上午做了个练习题,写了大量代码,老是没搞清哪错了,后来写了下if验证,原来是这错误了,一直以来理解错了。
else是可以被执行到的。一直以为判断完第一个num>0,就结束了。

作者: zuochbd    时间: 2014-8-26 11:00
本帖最后由 caixingke 于 2014-8-26 11:03 编辑

真实的开发中, 很多公司都会有代码风格的要求.
即使if下面只有一个句子, 也最好加上{}, 这样看起来看加清晰, 减少一些不必要的低级错误.
  1.         int num = 10;
  2.         
  3.         if (num>0){
  4.             System.out.println(">0");
  5.         } else if(num<0){
  6.             System.out.println("<0");
  7.         } else{
  8.             System.out.println("可以执行到吗?");
  9.         }
复制代码

也有好多大公司没有这么做.
比如JAVA类库的源代码, 常常没有这么做.
不好.
作者: 18334705181    时间: 2014-8-26 11:04
学习了。。。。。。。。。。。。
作者: dreamseekerkun    时间: 2014-8-26 11:10
caixingke 发表于 2014-8-26 11:00
真实的开发中, 很多公司都会有代码风格的要求.
即使if下面只有一个句子, 也最好加上{}, 这样看起来看加清晰 ...

恩加上确实可以减少一些低级错误,第二行的else不加,差大了,折腾我好久,一直没搞明白哪错了
作者: yaodd321    时间: 2014-8-26 11:25
楼主的源代码是一个if语句,一个if-else语句。如果第二个是else if,就不会执行第三个输出语句了吧。
作者: 碎流    时间: 2014-8-26 11:33
yaodd321 发表于 2014-8-26 11:25
楼主的源代码是一个if语句,一个if-else语句。如果第二个是else if,就不会执行第三个输出语句了吧。 ...

正解啊,,,,其实他这个本身是两个语句,,,,,
作者: mjwp_cool    时间: 2014-8-26 11:36
如果把上面的if语句改为if(num<=0){}或者if(num>=0){}的话。else是执行不到的
作者: mjwp_cool    时间: 2014-8-26 11:38
mjwp_cool 发表于 2014-8-26 11:36
如果把上面的if语句改为if(num=0){}的话。else是执行不到的

哎   上面写错了  没看清
作者: mjwp_cool    时间: 2014-8-26 11:43
是因为你的else语句只属于第二个if语句,和第一个没关系。这样说的话你能明白为什么能执行到了吧
作者: Java黑马    时间: 2014-8-26 13:07
这是两个语句吧,if(){}、if(){}else{}两个
作者: 赵哲成    时间: 2014-8-26 14:33
else是和最近的一个if进行匹配的,加上括号就不会出现这个问题
作者: king13131313    时间: 2014-8-26 14:47
>0可以执行到么
结果是这样?
作者: 赵哲成    时间: 2014-8-26 14:50
king13131313 发表于 2014-8-26 14:47
>0可以执行到么
结果是这样?

可以执行到。
作者: 天黑偷牛    时间: 2014-8-26 15:42
注意代码格式的书写,就可以少些这样的错误
作者: 小子考驾照    时间: 2014-8-26 16:05
这代码确实好简单0.0
作者: 低调小邦    时间: 2014-8-27 07:59
你 那样写 第二个if都会被执行的  执行到第二个if如果条件为真就输出if下的语句如果为假 就执行else。。




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