概述

流程控制总共有三种 顺序流程 分支 循环

让程序有选择的的执行,分支控制有三种:单分支、双分支、多分支

语法

  • 单分支

if (条件表达式) {
执行代码块
}
说明:当条件表达式为ture时,就会执行{ }的代码。

  • 双分支

if (条件表达式) {
执行代码块1
} else {
执行代码块2
}

  • 多分支

if (条件表达式1) {
执行代码块1
}
else if (条件表达式2) {
执行代码块2
}
……
else {
执行代码块n
}

**

案例

基础案例

  1. val a = 10
  2. if (a % 2 == 0) {
  3. println(s"$a 是偶数")
  4. }
  5. val m = 10
  6. val n = 20
  7. var max = m
  8. if (m > n) {
  9. max = m
  10. } else {
  11. max = n
  12. }

在Scala中, 任意的语法结构(执行的语句, 表达式等等)都有值, 是执行的最后一行代码的值自动返回,

在Scala里面没有三元运算符,就可以用下面的代替三元运算符

   val m = 10
    val n = 20

    val max = if (m > n) m else n // 等价于: m > n ? m :n
    println(max)//20

if elas 有返回值

Scala中if else表达式其实是有返回值的,具体返回值取决于满足条件的代码体的最后一行内容。

   def main(args: Array[String]): Unit = {

        println("input age")
        var age = StdIn.readInt()

        val res :String = if (age < 18){
            "童年"
        }else if(age>=18 && age<30){
            "中年"
        }else{
            "老年"
        }

        println(res)
    }

返回值类型不一致,取它们共同的祖先类型

  def main(args: Array[String]): Unit = {

        println("input age")
        var age = StdIn.readInt()

        val res:Any = if (age < 18){
            "童年"
        }else if(age>=18 && age<30){
            "中年"
        }else{
            100
        }

        println(res)
    }

Java中的三元运算符可以用if else实现

如果大括号{}内的逻辑代码只有一行,大括号可以省略。如果省略大括号,if只对最近的一行逻辑代码起作用。

 def main(args: Array[String]): Unit = {

        // Java
// int result = flag?1:0

        // Scala
        println("input age")
        var age = StdIn.readInt()
        val res:Any = if (age < 18)  "童年" else "成年"
"不起作用"

        println(res)
    }