前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >scala(三) 流程控制

scala(三) 流程控制

作者头像
用户1483438
发布2022-04-11 16:18:36
1730
发布2022-04-11 16:18:36
举报
文章被收录于专栏:大数据共享

分支控制if-else

Scala IF...ELSE 语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。

单分支 if

可以通过下图来简单了解条件语句的执行过程:

if
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 方法

代码语言:javascript
复制
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

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 分支控制if-else
  • 单分支 if
  • 双分支 if-else
  • 多分支 if-else if...else
  • 嵌套分支
  • 块表达式
  • 流程控制返回值
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档