选择结构
Scala同样提供了对程序流程控制的语法。Scala中的程序流程控制结构虽然与Java类似,但也有自己的一些独特的方法。
选择结构
Scala的if/else语法结构和Java或者C++一样。不过,在Scala中if/else表达式会返回一个值,这个值就是跟在if或else之后的表达式的值。
val x = if (a) y else z
请看下面的示例代码:
val age = 19 // 单分支选择结构 if (age > 20) { println(222) } // 双分支选择结构 if (age > 20) { println(444) } else { println(555) } // 多分支选择结构 if (age < 18) { println(666) } else if (age <= 36) { println(777) } else if (age <= 60) { println(888) } else{ println(999) } // 三元运算符 if(!true) 1 else 0
输出结果如下:
age: Int = 19 222 555 777 res110: Int = 0
在scala中,更经常是将if语句作为表达式来使用。在Scala中,每个表达式都有值。执行下面的代码:
val score = 60 if(score>=60) "及格" else "不及格" val result = if(score>=60) "及格" else "不及格" // 作为表达式,值赋给变量result val result1 = if(score>=60) "及格" else 0 // 注意:返回的是公共类型Any val result2 = if(score<60) "不及格" // 等同于if(score<60) "不及格" else ()
输出结果如下:
score: Int = 60 res37: String = 及格 result: String = 及格 result1: Any = 及格 result2: Any = ()
示例
【例】请编写scala代码,计算工人报酬。计算原则如下:前40个小时,按小时付报酬,每小时50元;超过40小时,应该付1.5倍报酬。
import scala.io.StdIn object Test { def main(args: Array[String]): Unit = { // 基本报酬标准 val reward = 50.00 // 动态输入工时 val workHours = StdIn.readLine("请输入工时:") // 将输入工时转换为整数 val workHoursInt = workHours.toInt // 计算报酬总额 var payment = 0.0 if(workHoursInt<=40){ payment = workHoursInt * reward }else{ payment = 40 * reward + (workHoursInt-40)*(reward*1.5) } // 输出结果 println(s"工作时长${workHours}小时,应付报酬$payment") } }