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 功能。