分支控制if-else
Scala IF...ELSE 语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。
单分支 if
可以通过下图来简单了解条件语句的执行过程:
语法:
代码语言:javascript复制if(布尔表达式)
{
// 如果布尔表达式为 true 则执行该语句块
}
案例:
代码语言:javascript复制 def main(args: Array[String]): Unit = {
val i=10
if (i>5){
println("大于5")
}
}
代码语言:javascript复制大于5
双分支 if-else
语法:
代码语言:javascript复制if (条件表达式) {
执行代码块1
} else {
执行代码块2
}
案例:
代码语言:javascript复制 def main(args: Array[String]): Unit = {
val i=4
if (i>5){
println("大于5")
}else{
println("小于5")
}
}
代码语言:javascript复制小于5
多分支 if-else if...else
语法:
代码语言:javascript复制if (条件表达式1) {
执行代码块1
} else if(条件表达式1){
执行代码块2
} else if(条件表达式2){
执行代码块3
}
....
else{
执行代码块N
}
案例:根据年龄判断该用户属于什么年龄阶段
代码语言:javascript复制def main(args: Array[String]): Unit = {
print("请输入你的年龄:")
val age =StdIn.readInt()
var tem=""
if(age<=12){
tem="儿童"
}else if(12< age && age <=18 ){
tem="青少年"
}else if(18< age && age <=30 ) {
tem = "青年"
}else if(30< age && age <=60 ){
tem = "中年"
}else if(60< age && age <=150 ){
tem = "老年"
}else{
println("非人类")
return
}
println(s"你的年龄处于${tem}期")
}
代码语言:javascript复制请输入你的年龄:89
你的年龄处于老年期
嵌套分支
在一个分支结构中又完整的嵌套了另一个完整的分支结构,里面的分支的结构称为内层。分支外面的分支结构称为外层分支。嵌套分支不要超过3层。
代码语言:javascript复制if(条件表达式1){
if(条件表达式2){
执行代码块1
}else{
执行代码块2
}
}
案例:网吧游戏校验
代码语言:javascript复制 def main(args: Array[String]): Unit = {
print("请输入你的年龄:")
val age =StdIn.readInt()
print("请输入你的性别:")
val sex =StdIn.readChar()
if(age>=18){
if(sex.equals('男')){
println("来玩CF")
}else{
println("来玩QQ炫舞")
}
}else{
println("未成年人禁止玩游戏")
}
}
代码语言:javascript复制请输入你的年龄:19
请输入你的性别:女
来玩QQ炫舞
我:感觉上面的内容和java没啥区别呀? scala:就这?我的强大你还没发掘呢。 我:?
块表达式
定义:由{}
包裹的一段代码称为快表达式,块表达式可以有返回值,返回值是{}
中最后一个表达式的结果值。
案例:块表达式定义与使用
代码语言:javascript复制 def main(args: Array[String]): Unit = {
val result={
val a=10
val b =20
a b
}
println(result) // 30
}
块表达式并不是方法,所以内部不能使用 return
;因为return
用于方法中,使用 return
将会结束方法。
案例:运行只有,什么都打印;直接退出 main
方法
def main(args: Array[String]): Unit = {
val result={
val a=10
val b =20
return a b
}
println("*"*10)
println(result)
}
正确操作
代码语言:javascript复制 def main(args: Array[String]): Unit = {
val result={
val a=10
val b =20
a b
}
println("*"*10)
println(result)
}
代码语言:javascript复制**********
30
至于作用域:块表达式内的变量只能访问 块外的定义的变量,外部无法访问块内部的变量。
代码语言:javascript复制 def main(args: Array[String]): Unit = {
val c=100
val result={
val a=10
val b =20
val d=b c
a b d
}
println("*"*10)
println(result)
}
代码语言:javascript复制**********
150
流程控制返回值
在 Scala 中一切皆为对象,if-else 也一样,是对象就有返回,if-else 的返回值 就是程序语句块最后一个代码的结果。
其原因:if 块也属于块表达式
案例:改改上面的代码
代码语言:javascript复制def main(args: Array[String]): Unit = {
print("请输入你的年龄:")
val age =StdIn.readInt()
print("请输入你的性别:")
val sex =StdIn.readChar()
val result=if(age>=18){
if(sex.equals('男')){
"来玩CF"
}else{
"来玩QQ炫舞"
}
}else{
"未成年人禁止玩游戏"
}
println(result)
}
代码语言:javascript复制请输入你的年龄:65
请输入你的性别:男
来玩CF