scala-stwitch分支结构

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

for循环控制
head = 35  # 总头数
foot = 94  # 总脚数

for chicken in range(head + 1):
    rabbit = head - chicken
    if 2 * chicken + 4 * rabbit == foot:
 
1. 首先定义了变量  head  表示总头数, foot  表示总脚数。
 
2. 使用  for  循环,循环变量  chicken  表示鸡的数量,范围从  0  到  head 。
 
3. 在循环内部,计算出兔的数量  rabbit  为  head - chicken 。
 
4. 通过判断  2 * chicken + 4 * rabbit == foot  是否成立,来确定当前的鸡和兔的数量是否满足总脚数的条件。如果满足,则输出鸡和兔的数量。

范围数据循环(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 功能。