scala学习-循环

For循环控制

范围数据循环(To)
// 前后闭合
for (i <- 1 to 10) {
  println(i)
}
范围数据循环(Until)
// 前闭后开
for (i <- 1 until 10) {
  println(i)
}
循环守卫
for (i <- 1 to 10 if i != 2) {
  println(i)
}
循环步长
for (i <- 1 to 10 by 2) {
  println(i)
}
嵌套循环
for (i <- 1 to 3; j <- 2 to 4) {
    println(s"i:$i j:$j")
}
i:1 j:2
i:1 j:3
i:1 j:4
i:2 j:2
i:2 j:3
i:2 j:4
i:3 j:2
i:3 j:3
i:3 j:4
// 九九乘法表
for (i <- 1 to 9) {
  for (j <- 1 to i) {
    print(s"$j*$i=${j*i}\t")
  }
  println()
}
1*1=1	
1*2=2	2*2=4	
1*3=3	2*3=6	3*3=9	
1*4=4	2*4=8	3*4=12	4*4=16	
1*5=5	2*5=10	3*5=15	4*5=20	5*5=25	
1*6=6	2*6=12	3*6=18	4*6=24	5*6=30	6*6=36	
1*7=7	2*7=14	3*7=21	4*7=28	5*7=35	6*7=42	7*7=49	
1*8=8	2*8=16	3*8=24	4*8=32	5*8=40	6*8=48	7*8=56	8*8=64	
1*9=9	2*9=18	3*9=27	4*9=36	5*9=45	6*9=54	7*9=63	8*9=72	9*9=81	
引入变量
// 这里的j就等于10-i
for (i <- 1 to 10; j = 10 -i) {
  println(s"i:$i j:$j")
}
// 下面写法也正确
for {
   i <- 1 to 10
   j = 10 -i
}
{
   println(s"i:$i j:$j")
}
i:1 j:9
i:2 j:8
i:3 j:7
i:4 j:6
i:5 j:5
i:6 j:4
i:7 j:3
i:8 j:2
i:9 j:1
i:10 j:0
  • for 推导式一行中有多个表达式时,所以要加 ; 来隔断逻辑
  • for 推导式有一个不成文的约定:当 for 推导式仅包含单一表达式时使用圆括号,当包含多个表达式时,一般每行一个表达式,并用花括号代替圆括号
// 九妖塔
for (i <- 1 to 9) {
  println(" "*(9-i)+"*"*(2*i-1))
}
// 或
for (i <- 1 to 9; starts="*"*(2*i-1); spaces=" "*(9-i)) {
  println(spaces + starts)
}
// 或
for (starts <- 1 to 17 by 2; spaces=(17 - starts) / 2) {
  println(" "*spaces + "*"*starts)
}
        *        
       ***       
      *****      
     *******     
    *********    
   ***********   
  *************  
 *************** 
*****************   
循环返回值
var list = for (i <- 1 to 10) yield i
println(list)
Vector(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

While 和 do…While 循环控制

While 循环控制
while (循环条件) {
  循环体(语句)
  循环变量迭代
}
  • (1)循环条件是返回一个布尔值的表达式
  • (2)while 循环是先判断再执行语句
  • (3)与 for 语句不同,while 语句没有返回值,即整个 while 语句的结果是 Unit 类型()
  • (4)因为 while 中没有返回值,所以当要用该语句来计算并返回结果时,就不可避免的使用变量,而变量需要声明在 while 循环的外部,那么就等同于循环的内部对外部的变量造成了影响,所以不推荐使用,而是推荐使用 for 循环。
do…while 循环控制
do {
  循环体(语句)
  循环变量迭代
} while(循环条件)
循环中断

采用异常的方式退出循环

try {
  for (i <- 1 to 10) {
    if (i == 5)
      throw new RuntimeException
  }
} catch {
  case e=>
}
println("循环退出")

采用 Scala 自带的函数,退出循环

Breaks.breakable(
  for (i <- 1 to 10) {
    if (i == 5)
      Breaks.break()
  }
)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值