A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 何伟超 于 2014-3-3 04:36 编辑

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

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

关于switch语句中case

关于switch语句中case

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

6 个回复

倒序浏览
switch case 不支持这种方式,可以这样
case 1:
case 2:
case 3:
println("春季");
break;
回复 使用道具 举报 1 0
自己琢磨了一下,是不是逻辑运算在运算过程中涉及到Boolean类型的缘故啊,case无法判断布尔型结果;
回复 使用道具 举报
楼主,switch语句的格式不支持这种方式的,switch的case语法只能每次赋予一个值
case 3:
case 4:
case 5:
楼主想多个的话不妨用用if来进行区间判断
if(x>=3 && x<=5)

switch适合用于数值不多,并且符合byte int short char这四种类型的判断,因为效率稍高。。。
但是if的应用范围更加广。

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报 1 0
亲,你那种写法肯定不行啊,你可以连续几个case不就能实现你的想法了嘛
回复 使用道具 举报
薛淑凯 发表于 2014-3-2 20:14
switch case 不支持这种方式,可以这样
case 1:
case 2:

2楼说道点子上了,一定要用case的话,就几个case了再break
回复 使用道具 举报
    首先谢谢各位的热心帮助,我在论坛里找了一下类似问题,差不多明白了,跟大家分享。
      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 语句。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马