5-2 switch语句

switch也是一种程序流程控制的命令,它的基本使用语法如下。

上述语法的流程图如下所示。

上述程序执行时,会依switch(变量表达式)的结果值,由上往下找寻符合条件的case,当找到时,Java会去执行与该case有关的语句,直到碰到break或是遇上switch语句的结束符号,才结束switch语句。default可有可无,如果有default时,当所有条件的case都不符合时,则执行default底下的语句。例如,switch的变量或表达式可以是考试分数(假设是在199分之间),将分数除以10,取整数,几种可能情况如下。

9——得A

8——得B

7——得C

6——得D

default得F

switch语句几个关键点说明如下。

(1)switch:在switch中的变量或表达式的结果必须是char、byte、short、int、String类型的数据。

(2)case:一般case的值是常数,偶尔也会看到由常数组成的表达式,switch会根据变量或表达式的结果执行符合case值的相关程序语句区块,直到遇上break或是遇上switch语句的结束符号。

(3)default:可有可无,如果没有相当于若是switch的变量或表达式的结果找不到相对应的case时,则不执行任何工作。若是想要找不到相对应的case时可以执行一些工作,则可以设计default,然后执行特定工作。

程序实例ch5_12.java:重新设计ch5_8.java,输入分数然后产生A~F的成绩。

执行结果

与ch5_8.java相同。

程序设计时不同case可以有相同的结果,在上一个程序实例中,先排除了分数是100分,下面将重新设计此程序。

程序实例ch5_13.java:这个程序允许成绩是100分,如果100分时输出是A。

执行结果

对于上述程序而言,当case的值是10或9时,输出A,碰上这类程序可以省略第11行的输出A语句和12行的break。这时当程序得到case是10时,执行相对应的语句,若是没看到break,程序会往下执行,相当于会执行到第14行和第15行,也就是执行到碰上15行的break才会跳出switch。

程序实例ch5_14.java:重新设计ch5_13.java,主要是省略case是10时的语句,让程序执行case是9的语句。

执行结果

与ch5_13.java相同。

程序实例ch5_15.java:这个程序会要求输入姓氏,如果是前5大姓氏会列出在中国的人数占比和约有多少人是此姓氏,若是其他姓氏则列出不在前5大。

执行结果

上述程序以读取字符串方式读取姓氏数据,其实也可以使用读取字符方式读取姓氏数据,这个当作是本章习题供读者练习。

程序实例ch5_16.java:商店买水果计价程序设计。这个程序会列出所销售水果供选择,然后输入购买数量,最后列出总金额。

执行结果