内建控制-循环语句for循环

53 阅读2分钟

一.for循环

for(循环变量 <- 数据集) {  
  // 循环体代码  
}

说明:

1.如果循环变量的类型能被推断出来,是可以省略掉变量类型的。

2.这里的数据集可以是任意类型的数据集合,如字符串,集合,数组等等。

object Base24 {
  def main(args: Array[String]): Unit = {
    // by:步长,循序变量每次增加的值。默认就是1
    // for( i <- 1 to 100 by 1)  <====>   for( i <- 1 to 100)
    var sum = 0
    for(i <- 1 to 100 by 2 ){
      println(i)
      sum += i
    }
    println(sum)
  }
}
object Base25 {
  def main(args: Array[String]): Unit = {
    for(i <- 1 to 5){  //控制有几行
      for(j <- 1 to i){  // 控制具体每一行上的内容
       print(i)//不换行
     }
     println() // 换行
   }
  }
}

二.循环守卫

在循环中添加条件,如果条件成立就执行

格式:

for(循环变量 <- 数据集 if condition1; if condition2 ...){  
  循环体  
}

三.循环步长

如何输出1 ~ 100 之间的奇数?

可以按1,3,5... 这个格式来输出。这就涉及到步长

格式1:1 to 5 by 2

格式2:Range(1,5,2)

四.循环的返回值

for也可以获取到返回值,使用yield

val ret = for(i <- 1 to 3) yield { i*2 }  
println(ret)  
println(ret(1))

五.循环嵌套

循环中有循环

for(i <- 1 to 3){  
  for(j <- 1 to 3){  
    println("i=" + i +", j=" + j)  
  }  
}

等价于

for(i <-Range(1,4); j<-Range(1,4){  
  println("i=" + i +", j=" + j)  
}
九九乘法表
object Base26 {
  def main(args: Array[String]): Unit = {
    for(i <- 1 to 9){  //行
      for(j <- 1 to i){  // 具体一行上的内容
       printf("%d*%d=%-4d",j,i,i*j)//不换行
     }
     println() // 换行
   }
  }
}

六.continue

在scala中是没有break和continue关键字的,如果一定要用,可以用scala.util.control包下的Breaks类的break

import scala.util.control.Breaks._  
object MainFor {  
  def main(args: Array[String]): Unit = {  
     for(i <- 1 to 10){  
       breakable {  
         if(i%3 == 0){  
           //         continue  
           break  
         }  
         println(i)  
       }  
     }  
  }  
}

将breakable写在for循环内部,就是continue

屏幕截图 2025-09-25 094140.png

2025-9-25 9-40-21.JPG