黑马程序员技术交流社区

标题: 求大神指导 [打印本页]

作者: WElife    时间: 2015-7-3 08:11
标题: 求大神指导
  1. int month = 9;
  2. if(month<1 || month>12)
  3. System.out.println(month+"月没有对应的季节");
  4. else if(month>=3 && month<=5)
  5. System.out.println(month+"月是春季");
  6. else if(month>=6 && month<=8)
  7. System.out.println(month+"月是夏季");
  8. else if(month>=9 && month<=11)
  9. System.out.println(month+"月是秋季");
  10. else
  11. System.out.println(month+"月是冬季");
复制代码

显示月份
&&是不是有点问题  是不是应该把&&换成&


作者: 虾米吃螃蟹    时间: 2015-7-3 08:24
不用,&不论左边满不满足两边都判断,而&&只要左边不满足就不去判断右边了。
作者: WElife    时间: 2015-7-3 08:42
虾米吃螃蟹 发表于 2015-7-3 08:24
不用,&不论左边满不满足两边都判断,而&&只要左边不满足就不去判断右边了。 ...

要是这样 那输入9就  结果应该输出的是秋天了 实际上9>=3满足 就不用去判后面的是否<=5 这样输出的就是春天了
作者: 虾米吃螃蟹    时间: 2015-7-3 08:45
&&表示的是与的关系,当左边满足后还要去判断右边。只有当左边不满足才不判断右边
作者: 虾米吃螃蟹    时间: 2015-7-3 08:46
WElife 发表于 2015-7-3 08:42
要是这样 那输入9就  结果应该输出的是秋天了 实际上9>=3满足 就不用去判后面的是否 ...

&&表示的是与的关系,当左边满足后还要去判断右边。只有当左边不满足才不判断右边
作者: fmi110    时间: 2015-7-3 09:00
WElife 发表于 2015-7-3 08:42
要是这样 那输入9就  结果应该输出的是秋天了 实际上9>=3满足 就不用去判后面的是否 ...

我觉得你没把”||“和”&&“短路的条件搞清楚
短路的情况
&&:只要一个为false,则整个表达式为false,所以只要判断到有false值,就会终止后面的语句
比如(4<3)&&(4>2),左边(4<3)为false,则整个逻辑表达式(4<3)&&(4>2)必为false,所以不会区执行右边的表达式,也就是说一旦能确定最终的逻辑值,就会终止,不在执行后面的语句;你输入9,9>=3,但是无法确定最终值,所以还要再执行后面的判断
|| :或逻辑,只要一个为真,则整个表达式为真,所以一旦左边为true,则不在判断右边的语句
作者: WElife    时间: 2015-7-3 09:01
WElife 发表于 2015-7-3 08:42
要是这样 那输入9就  结果应该输出的是秋天了 实际上9>=3满足 就不用去判后面的是否 ...

谢谢啦 我懂了
作者: WElife    时间: 2015-7-3 09:13
fmi110 发表于 2015-7-3 09:00
我觉得你没把”||“和”&&“短路的条件搞清楚
短路的情况
&&:只要一个为false,则整个表达式为false,所 ...

非常谢谢大神  我懂了  :victory:
作者: fantianfei    时间: 2015-7-3 09:55
楼主 貌似不错哦
作者: shanshan33    时间: 2015-7-3 22:12
看到你这个问题就知道你没有好好看笔记或者视频,&&和&的功能是一样的,有一点的小区别是&&的左边为假时便不再计算右边的,直接判断为False
作者: 122125241    时间: 2015-7-3 22:28
面试基本知识 还是好好看看吧~~很简单的




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