当前位置: 首页 > news >正文

循环控制的内容

一、循环守卫
循环守卫,即循环保护式(也称条件判断式,守卫)。保护式为 true 则进入循环体内部,为false 则跳过,类似于continue。
1、基本语法
for(i <- 1 to 3 if i != 2)
{ print(i + " ")
}
println()
2、案例实操:
需求:输出 1 到 10 中,不等于 6 的偶数的值
object demo01 {
def main(args: Array[String]):Unit = {
for (i <- 1 to 10 if i % 2 == 0 && i != 6) {
println(i + "符合条件的偶数")
}
}
}

二、循环步长
1、基本语法
object demo03 {
def main(args: Array[String]):Unit = {
for (i <- 1 to 10 by 2)
{ println("i=" + i)
}
by 表示步长
2、案例实操:
需求:输出2到20以内,以3为步长的所有数
for (i <- 2 to 20 by 3) {
  println("数值为: " + i)
}

三、嵌套循环
1、基本语法
for(i <- 1 to 3; j <- 1 to 3) {
println(" i =" + i + " j = " + j)
}
没有关键字,所以范围后一定要加;来隔断逻辑
2、案例实操:
需求:使用嵌套循环打印九九乘法表
object demo03 {
def main(args: Array[String]):Unit = {
for (i <- 1 to 9; j <- 1 to i) {
  print(s"$j * $i = ${i * j}\t")
  if (j == i) println()
}

四、循环返回值
1、基本语法
val res = for(i <- 1 to 10) yield i
println(res)
将遍历过程中处理的结果返回到一个新 Vector 集合中,使用 yield 关键字。
2、案例实操
需求:将原集合中所有整数加 3 ,并把结果返回到一个新的集合中。
object demo04{
  def main(args: Array[String]): Unit = {
    val numList = List(1, 2, 3, 4, 5)
    var res = for (i <- numList) yield {
      i + 3
    }
    println(res)
  }
}    

五、倒序打印
案例实操:
需求:倒序打印数组 Array(5, 10, 15, 20, 25) 中的元素。
object demo05{
  def main(args: Array[String]): Unit = {
val arr = Array(5, 10, 15, 20, 25)
for (elem <- arr.reverse) {
  println(elem)
}
}
}

六、循环中断
1、基本说明
Scala 内置控制结构特地去掉了 break 和 continue,是为了更好的适应函数式编程,推荐使用函数式的风格解决break 和continue 的功能,而不是一个关键字。Scala 中使用breakable 控制结构来实现 break 和 continue 功能
2、案例实操
需求:采用异常的方式,在遍历数组时,遇到特定元素就退出循环 。
object demo06{
def main(args: Array[String]): Unit = {
  try {
    val arr = Array(10, 20, 30, 40, 50)
    for (elem <- arr) {
      println(elem)
      if (elem == 30) throw new RuntimeException
    }
  } catch {
    case _: RuntimeException => println("循环因特定条件提前结束")
}
}
}

http://www.dtcms.com/a/102105.html

相关文章:

  • [Vue]生命周期
  • JavaScript事件监听
  • Vue2和3的vue-router:生命周期、懒加载
  • Nmap全脚本使用指南!NSE脚本全详细教程!Kali Linux教程!(三)
  • 通过Anaconda Prompt激活某个虚拟环境并安装第三方库
  • Linux多线程编程的艺术:封装线程、锁、条件变量和信号量的工程实践
  • 今日行情明日机会——20250331
  • Ansible(2)——部署 Ansible
  • 爬虫:基本流程和robots协议
  • 从零构建大语言模型全栈开发指南:第四部分:工程实践与部署-4.1.1模型量化(INT8/FP16)与剪枝策略
  • 【软考备考】管道一过滤器(Pipe-Filter)的架构风格
  • USB有驱IC卡读卡器
  • Spring中都用到了哪些设计模式
  • 美团小程序 mtgsig1.2 拼好饭案例 分析 mtgsig
  • 六级词汇量积累day13
  • dayjs dayjs时间格式化工具(时间计算、时间格式化)
  • DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加行拖拽排序功能示例14,TableView16_14 拖拽自动保存示例
  • python leetcode简单练习(1)
  • 【FreeRTOS】任务(TASK)——任务的创建(源码解读)
  • Qt中绘制不规则控件
  • ​Linux 中 nmap 命令详解:从基础到实战的全面指南
  • dfs记忆化搜索刷题 + 总结
  • 如何判断列表a中元素是否在列表b中
  • [leetcode]2685. 统计完全连通分量的数量
  • C++ 结构体、结构体指针与结构体指针数组详解
  • RabbitMQ 的三种集群模式
  • ETL数据集成:企业数字化转型的核心驱动力与实施策略
  • C++ Primer Plus 编程练习题 第五章 循环和关系表达式
  • 22-ArkTs 常见错误
  • DataPlatter:利用最少成本数据提升机器人操控的泛化能力