处理多个分支时,使用if…else if 结构显然非常烦琐,这是我们大家有目共睹的。基于这样的问题,Java 也提供了多分支结构语句,它就是switch…case 语句。它的结构根据表达式的值从多个分支中选择一个来执行。它的一般语法格式如下:
在上面的定义中,大家会注意到每个case条件均以一个break结尾。这样,可使执行流程跳至switch主体的末尾,这是构建switch…case语句的一种传统方式。但break在这里实际是可选的,若省去break,它会继续执行后面case语句里的代码,直到遇见一个break为止。尽管通常不想出现这种情况,但对有经验的程序员来说,也许仍然能够善加利用。
注意:最后的default语句,没有break。因为执行流程已到了break的跳转目的地,当然,如果考虑到编程风格方面的原因,完全可在default语句的末尾放置一个break。尽管它并没有任何实际的用处。
switch…case语句是实现多路选择的一种简便方式。比如从一系列执行路径中挑选一个,但它要求使用一个选择因子,并且必须是整型(int,short,byte)或字符型(char)和字符串(String)的数据。例如,若将一个字符串或者浮点数作为选择因子使用,那么它们在switch…case语句里是不会工作的。对于非整数类型,则必须使用一系列if 语句,所以switch…case只能比较整数值或字符。
例2.13:随机生成字母,并判断它们是元音字母还是辅音字母。
执行上面程序运行结果如下:(www.daowen.com)
由于Math.random()会产生0到1之间的一个值,所以只需将其乘以想获得的最大随机数,对于英语字母这个数字是26,再加上一个偏移量便得到最小的随机数。尽管我们表面上要处理的是字符,但switch…case语句实际使用的是字符的整数值。在case语句中用单引号('')封闭起来的字符也会产生整数值,以便我们进行比较。
请注意case语句相互间是如何聚合在一起的。它们依次排列为一部分特定的代码,提供了多种匹配模式,也请注意要将break语句置于一个特定case的末尾。否则控制流程会简单地下移,不会继续判断下一个条件是否相等。
应特别留意下面这个语句:
Math.random()会产生一个double值,所以26会转换成double类型,以便执行乘法运算。这个运算也会产生一个double值,这意味着为了执行加法,必须将'a'转换成一个double。利用一个强制类型转化,结果会转换成char类型。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。