for循环

121 阅读2分钟

for循环

格式

for(循环变量 <- 起点 to 终点){
   println(循环变量)
}

示例:

for(i <- 1 to 100){
  println(i)
}

要点:

  1. 循环变量不需要去加var
  2. 循环变量只能在循环{}内使用

for v.s. while

  1. for 适用于明确地知道循环起点和终点
  2. while 适用于不确定循环次数的情况

循环守卫

定义

当后面的条件都满足的时候,才会去执行循环体的内容

格式

for(循环变量 <- 起点 to 终点; if(条件1);if(条件2);if(条件3)){
   println(循环变量)
}

输出1-100中能整除2,3,4的数字

for(i <- 1 to 100; if(i%2 == 0); if(i%3 == 0); if(i%4 == 0)){
  println(i)
}

循环步长

定义

每次循环之后,循环变量的自增数值

格式

for(循环变量 <- 起点 to 终点 by 步长){
   println(循环变量)
}

代码示例:

for(i <- 1 to 100 by 20){
  println(i)
}

break 跳出 整个for循环

格式

breakable {
   for(循环变量 <- 起点 to 终点){
   break
}
}

综合示例

示例1

判断素数

  • 只能被1 和 它自己整除的数
  • eg:2,3,5,7,11,13,17,19......97
  • 思路:用2~(n-1) 依次去除这个数,如果能整除就说明不是素数
  • 例如:
  • n = 9
    1. 2 不能整除
    1. 3 能整除(不是素数)
  • n = 35
    1. 2 不能整除
    1. 3 不能整除
    1. 4 不能整除
    1. 5 能整除(不是素数)

代码示例:

// breakable+break:优化不是素数的情况:提前结束循环
// Math.sqrt(n):减少搜索范围

val n = 97
var isPrime = true
breakable{
  for(i <- 2 to Math.sqrt(n).toInt){
    if(n%i == 0){ // 能整除,结束循环
      println(s"${i}能整除")
      isPrime = false
    }
    break
  }
}

if(isPrime){
  print(s"${n}是素数")
} else {
  print(s"${n}是不素数")
}