选择结构
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")
}
}