Scala-switch分支结构

发布于:2025-04-02 ⋅ 阅读:(18) ⋅ 点赞:(0)

for循环控制

范围数据循环(to)

for(i <- 1 to 3){

print(i + " ")

}

println()

i是循环变量 <- 规定to

i从1-3循环 前后闭合

案例实操:输出五句Scala

object TestFor {

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

{ for(i <- 1 to 5){ println("scala "+i) }

}

}

范围数据循环(until)

for(i <- 1 until 3) {

print(i + " ")

}

println()

i是从1到3-1进行循环 前闭合后开

案例实操:输出五句Scala

object TestFor {

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

{ for(i <- 1 until 5 + 1){

println("scala" + i)

              }

      }

}

循环守卫

for(i <- 1 to 3 if i != 2)

{ print(i + " ")

}

println()

循环守卫,即循环保护式(也称条件判断式,守卫)。保护式为 true 则进入循环体内部,为false 则跳过,类似于continue

案例实操:输出1-5中不等于3的值

object TestFor {

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

{ for (i <- 1 to 5 if i != 3) {

println(i + "张三丰")

                }

       }

}

循环步长

for (i <- 1 to 10 by 2)

{ println("i=" + i)

}

by是步长

案例实操:1-10中所有的奇数

for (i <- 1 to 10 by 2)

{ println("i=" + i)

}

输出结果

i=1 i=3 i=5 i=7 i=9 

嵌套循环

for(i <- 1 to 3; j <- 1 to 3)

{ println(" i =" + i + " j = " + j)

}

范围后面一定要加;来隔绝逻辑

引入变量

for(i <- 1 to 3; j = 4 - i)

{ println("i=" + i + " j=" + j)

}

for 循环中有多个表达式时,要加 ; 来隔断逻辑

for 推导式有一个不成文的约定:当 for 推导式仅包含单一表达式时使用圆括号, 当包含多个表达式时,一般每行一个表达式,并用花括号代替圆括号

案例实操:

for (i <- 1 to 3)

{ var j = 4 - i

println("i=" + i + " j=" + j)

循环返回值

val res = for(i <- 1 to 10) yield i

println(res)

将遍历过程中处理的结果返回到一个新 Vector 集合中,使用 yield 关键字。

案例实操:将原数据中所有值乘以 2,并把数据返回到一个新的集合中

object TestFor {

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

{ var res = for(i <-1 to 10) yield

     {

       i * 2

     }

     println(res)

     }

}

输出结果: Vector(2, 4, 6, 8, 10, 12, 14, 16, 18, 20)

倒序打印

如果想倒序打印一组数据,可以用 reverse。

案例实操:倒序打印10-1

for(i <- 1 to 10 re

verse){ println(i)

}

While 循环控制

循环变量初始化

while

(循环条件) {

循环体(语句)

循环变量迭代

}

说明: 循环条件是返回一个布尔值的表达式

while 循环是先判断再执行语句

与 for 语句不同,while 语句没有返回值

do..while 循环控制

do{

循环体(语句)

循环变量迭代

} while(循环条件)

说明 循环条件是返回一个布尔值的表达式 do..while 循环是先执行,再判断 

循环中断

Scala 内置控制结构去掉了 break 和 continue,Scala 中使用breakable 控制结构来实现 break 和 continue 功能。

用for循环实现鸡兔同笼问题

object ChickenRabbitProblem {
  def main(args: Array[String]): Unit = {
    val totalHeads = 35
    val totalFeet = 94
    for {
      chickens <- 0 to totalHeads
      rabbits = totalHeads - chickens
      if (chickens * 2 + rabbits * 4 == totalFeet)
    } {
      println(s"鸡的数量: $chickens 只, 兔子的数量: $rabbits 只")
    }
  }
}


网站公告

今日签到

点亮在社区的每一天
去签到