Scala入门系列(6)-Scala之三大流程控制语句

顺序控制

程序从上到下逐行地执行,中间没有任何判断和跳转。
在这里插入图片描述

分支控制

让程序有选择的的执行(在scala中没有switch),分支控制有三种:

  • 单分支
  • 双分支
  • 多分支

单分支

基本语法
当条件表达式为ture 时,就会执行 { } 的代码。

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

在这里插入图片描述

object IfElse {
  def main(args: Array[String]): Unit = {
    val age = 17
    if (age < 18) {
      println("小小飞未满18岁")
    }
  }
}

双分支

当条件表达式成立,即执行代码块1,否则执行代码块2。
基本语法

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

流程图:
在这里插入图片描述

object IfElse {
  def main(args: Array[String]): Unit = {
    val age = 55
    if (age < 18) {
      println("小小飞未满18岁")
    }else{
      println("小小飞满18岁了")
    }
  }
}

多分支

说明:当条件表达式1成立时, 即执行代码块1,如果表达式1 不成立,才去判断表达式2是否 成立,如果表达式2成立,就执 行代码块2,以此类推,如果所 有的表达式都不成立,则执行 else 的代码块.
基本语法

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

在这里插入图片描述

object IfElse {
  def main(args: Array[String]): Unit = {
    val score = 50
    if (score >= 90) {
      println("优秀")
    } else if (score >= 60) {
      println("及格")
    } else {
      println("不及格")
    }
  }
}

循环控制

循环语句允许我们多次执行一个语句或语句组。
在这里插入图片描述
循环类型
在这里插入图片描述

for循环

Scala 也为for 循环这一常见的控制结构提供了非常多的特性,这些for 循环的 特性被称为for 推导式(for comprehension)或for 表达式(for expression)。

语法
Range 可以是一个数字区间表示 i to j ,或者 i until j。左箭头 <- 用于为变量 x 赋值。

for( var x <- Range ){
   statement(s);
}

范围数据循环方式1

  1. i 表示循环的变量, 规则为to,范围为1-10
  2. i 将会从 1-10 循环, 前后闭合
object ForWhile {
  def main(args: Array[String]): Unit = {
    //范围数据循环方式1
    for (i <- 1 to 10) {
      println("第" + i + "次打印!!!")
    }
  }
}

范围数据循环方式2

  1. 这种方式和前面的区别在于 i 是从1 到9
  2. 前闭合后开的范围,和java的arr.length() 类似
object ForWhile {
  def main(args: Array[String]): Unit = {
    //until
    for (i <- 1 until 10) {
      println("第" + i + "次打印!!!")
    }
  }
}

嵌套循环

在 for 循环 中你可以使用分号 (😉 来设置多个区间,它将迭代给定区间所有的可能值。

object ForWhile {
  def main(args: Array[String]): Unit = {
    for (i <- 1 to 10; y <- 1 to 10) {
      println("i第" + i + "次打印!!!")
      println("y第" + y + "次打印!!!")
    }
  }
}

循环集合

语法:

for( x <- List ){
   statement(s);
}
object ForWhile {
  def main(args: Array[String]): Unit = {
    val numList = List(1, 2, 3, 4, 5, 6)
    for (i <- numList) {
      println(i)
    }
  }
}

循环过滤

Scala 可以使用一个或多个 if 语句来过滤一些元素。为true则进入 循环体内部,为false则跳过,下述案例则只会数据第五次打印。

object ForWhile {
  def main(args: Array[String]): Unit = {
    for (i <- 1 to 10 if i == 5) {
      println("第" + i + "次打印!!!")
    }
  }
}

引入变量循环

可以在循环时引入变量,每次循环时,此变量也会跟着变化

object ForWhile {
  def main(args: Array[String]): Unit = {
    for (i <- 1 to 10; j = 5 + i) {
      println("第" + j + "次打印!!!")
    }
  }
}

循环返回值

你可以将 for 循环的返回值作为一个变量存储。将遍历过程中处理的结果返回到一个新Vector集合中,使用yield关键字。

语法
注意大括号中用于保存变量和条件,retVal 是变量, 循环中的 yield 会把当前的元素记下来,保存在集合中,循环结束后将返回该集合。

object ForWhile {
  def main(args: Array[String]): Unit = {
    //to
    var list = for (i <- 1 to 10) yield i
    println(list)
  }
}

while循环控制

只要给定的条件为 true,Scala 语言中的 while 循环语句会重复执行循环体内的代码块。
语法

循环变量初始化 
while (循环条件) { 
	循环体(语句) 
	循环变量迭代 
}

注意事项

  1. 循环条件是返回一个布尔值的表达式
  2. while循环是先判断再执行语句
  3. 与If语句不同,While语句本身没有值,即整个While语句的结果是Unit类型 的()
  4. 因为while中没有返回值,所以当要用该语句来计算并返回结果时,就不可避免 的使用变量 ,而变量需要声明在while循环的外部,那么就等同于循环的内 部对外部的变量造成了影响,所以不推荐使用,而是推荐使用for循环。
object ForWhile {
  def main(args: Array[String]): Unit = {
    var i = 1
    while (i <= 10) {
      println(i)
      i += 1
    }
  }
}

do…while循环控制

基本语法:

循环变量初始化; 
do{ 循环体(语句) 循环变量迭代 } 
while(循环条件)

注意事项

  1. 循环条件是返回一个布尔值的表达式
  2. do…while循环是先执行,再判断
  3. 和while 一样,因为do…while中没有返回值,所以当要用该语句来计算并返回 结果时,就不可避免的使用变量 ,而变量需要声明在do…while循环的外部, 那么就等同于循环的内部对外部的变量造成了影响,所以不推荐使用,而 是推荐使用for循环
object ForWhile {
  def main(args: Array[String]): Unit = {
    var i = 1
    do {
      println(i)
      i += 1
    } while (i <= 10)
  }
}

循环的中断

Scala内置控制结构特地也去掉了continue,是为了更好的适应函数化编程, 可以使用if – else 或是 循环守卫实现continue的效果。
示例:当i为奇数时跳过本次循环

object ForWhile {
  def main(args: Array[String]): Unit = {
    for (i <- 1 to 10; if i % 2 == 0) {
      println(i)
    }
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

墨 禹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值