黑马程序员技术交流社区

标题: case是只能对数值进行判断吗?中间不可以加运算符吗? [打印本页]

作者: king2042    时间: 2014-3-2 19:53
标题: case是只能对数值进行判断吗?中间不可以加运算符吗?
本帖最后由 何伟超 于 2014-3-3 04:36 编辑

在选择结构中switch表达式中的case智能判断数值吗?多个数值加入逻辑运算不能识别吗?

RL7[FIE(SXH5ULYVK241AM8.jpg (156.82 KB, 下载次数: 58)

关于switch语句中case

关于switch语句中case

作者: 薛淑凯    时间: 2014-3-2 20:14
switch case 不支持这种方式,可以这样
case 1:
case 2:
case 3:
println("春季");
break;
作者: king2042    时间: 2014-3-2 20:27
自己琢磨了一下,是不是逻辑运算在运算过程中涉及到Boolean类型的缘故啊,case无法判断布尔型结果;
作者: l939    时间: 2014-3-2 20:35
楼主,switch语句的格式不支持这种方式的,switch的case语法只能每次赋予一个值
case 3:
case 4:
case 5:
楼主想多个的话不妨用用if来进行区间判断
if(x>=3 && x<=5)

switch适合用于数值不多,并且符合byte int short char这四种类型的判断,因为效率稍高。。。
但是if的应用范围更加广。
作者: q527198615    时间: 2014-3-2 20:38
亲,你那种写法肯定不行啊,你可以连续几个case不就能实现你的想法了嘛
作者: q527198615    时间: 2014-3-2 20:40
薛淑凯 发表于 2014-3-2 20:14
switch case 不支持这种方式,可以这样
case 1:
case 2:

2楼说道点子上了,一定要用case的话,就几个case了再break
作者: king2042    时间: 2014-3-2 21:39
    首先谢谢各位的热心帮助,我在论坛里找了一下类似问题,差不多明白了,跟大家分享。
      1. && ||这是逻辑运算符,他们是boolean他们所得的结果是boolean类型的true或false,而不是你想象中的那种3或者4或者5的感觉。case后面要跟着常量表达式,所以不行。而且好像在||两边也不能是int类型数据。
     2. switch中没有break;的部分顺序执行,有则作用是中断退出,传入的number值与case的值对比,这个值一般有确定的数值、常量。
     3. case 穿透问题:switch 循环只在遇到两种情况结束:break , } 。如果如果执行了一个case语句或default之后 未到结尾的大括号,也没有遇到break,则会继续执行下面的语句,但不会判断case和default条件了,直到遇到break或右大括号,才会跳出循环。 循环中语句部分顺序,default语句可以放在任意处,但是先判断case语句。
判断类型:switch 语句,只能判断byte/short/int/char类型,对于区间和boolean 类型无法判断,解决办法,可以先用数值代替区间或boolean 值。实际开发中,几种判断语句,根据情况选择最适合的。另外,5.0以后 可以判断枚举类型,7.0判断字符串。
一般判断的输值不多,属于byte/short/int/char类型用switch,区间或boolean类型用if 语句。





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