Kotlin when条件语句,when
条件语句是一种很常用的选择语句。和if条件语句不同,它只能针对某个表达式的值做出判断,从而决定程序执行哪一段代码。例如,在程序中使用数字1~7
来表示星期一到星期日,如果想根据某个输入的数字来输出对应的中文格式的星期值,可以通过下面一段伪代码来描述:
用于表示星期的数字
如果等于1,则输出星期一
如果等于2,则输出星期二
如果等于3,则输出星期三
如果等于4,则输出星期四
如果等于5,则输出星期五
如果等于6,则输出星期六
如果等于7,则输出星期日
对于上面的伪代码的描述,大家可能会想到用刚学过的if…else if…else语句来实现,但是由于判断条件比较多,实现起来代码过长,不便于阅读。Kotlin中提供了一种when语句来实现这种需求,在when语句中使用when关键字来描述一个表达式,当表达式的值和某个目标值匹配时,会执行“->”
后面的语句。具体实现的伪代码如下:
when(用于表示星期的数字){
else -> {
输出输入的数字不正确
}
}
上面改写后的伪代码描述了when语句的基本语法格式,具体如下:
when(表达式/语句){
目标值1 -> 执行语句1
目标值2 -> 执行语句2
目标值3 -> 执行语句3
...
目标值n -> 执行语句n
else -> {
执行语句n+1
}
}
在上面的格式中,when语句将表达式的值与每个目标值进行匹配,如果找到了匹配的值,会执行对应“->”
后面的语句,如果没找到任何匹配的值,就会执行else后面的语句。
在when语句中,使用when关键字描述的不仅可以是一个表达式也可以是一条语句,如果它被当作表达式,则符合条件的目标值就是整个表达式的值,如果它被当作语句时,则忽略个别目标值,每一个分支可以是一个代码块,它的值是代码块中最后的表达式的值。如果其他目标值都不满足条件,则会求else分支中的值。如果when作为一个表达式使用时,则必须有else分支,除非编译器能够检测出的所有可能情况都已经覆盖了。接下来我们通过一个案例演示根据数字输出中文格式的星期,具体代码如下所示。
package com.itheima.chapter02.choice
fun main(args: Array<String>) {
var week: Int = 3
when (week) {
1 -> print(" 星期一")
2 -> print(" 星期二")
3 -> print(" 星期三")
4 -> print(" 星期四")
5 -> print(" 星期五")
6 -> print(" 星期六")
7 -> print(" 星期日")
else -> {
print(" 输入的数字不正确……")
}
}
}
运行结果:
星期三
上述代码中,由于变量week的值为3,整个when语句判断的结果满足第7行的条件,因此输出“星期三”,上述代码中的else语句用于处理与前面的目标值都不匹配的情况,将第3行的代码替换为“var week:Int=10”
,再次运行程序,则会输出“输入的数字不正确……”。
在使用when语句的过程中,如果多个目标值后面的执行语句是一样的,则可以把多个目标值放在一起,用逗号隔开。例如要判断一年中某个月份为什么季节,使用数字1~12
来表示一年中的12个月份,当输入的数字为12、1、2时就视为冬季,当输入的数字为3、4、5时就视为春季,当输入的数字为6、7、8时就视为夏季,当输入的数字为9、10、11时就视为秋季,否则就提示“没有这个月份,请重新输入……”。接下来我们通过一个案例来实现上面的描述情况,具体代码如下所示。
package com.itheima.chapter02.choice
fun main(args: Array<String>) {
var month: Int = 7
when (month) {
12, 1, 2 -> print(" 冬季")
3, 4, 5 -> print("春季")
6, 7, 8 -> print("夏季")
9, 10, 11 -> print("秋季")
else -> {
print(" 没有这个月份,请重新输入……")
}
}
}
运行结果:
夏季
在上述代码中,定义的月份为7月,符合条件“6, 7, 8->print("夏季")”
,因此输出夏季。
when语句也可以用来取代if…else if…else语句,如果when语句中不提供参数,所有的分支条件都是简单的布尔表达式,则当一个分支条件为真时可执行该分支后面的执行语句,具体代码如下所示。
package com.itheima.chapter02.choice
fun main(args: Array<String>) {
var a: Int = 7
var b: Int = 8
when {
a > b -> print("a 大于b")
a < b -> print("a 小于b")
else -> print("a 等于b")
}
}
运行结果:
a小于b
在上述代码中可以看到,定义了两个整型变量分别是a、b,变量a的初始值为7,变量b的初始值为8,在when语句中,当a>b
为true时,会执行“a>b”
后面的语句,当a<b
为true时,会执行“a<b”
后面的语句,否则会执行else后面的语句。
酷客教程相关文章:
评论前必须登录!
注册