for循环

60 阅读1分钟

说明

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

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

输出1 ~ 100

// 输出1 ~ 100
for(i <- 1 to 100){
  println(i)

}

循环守卫

循环中添加条件,如果条件成立就执行循环。这个叫循环守卫。

循环步长

 *  每次循环之后,循环变量的自增数值
 *
 * 格式:
 * for( 循环变量 <- 起点 to 终点 by 步长 ) {
 *     println(循环变量)
 * }
 *
  */
// 输出1 ~ 100 中的奇数
for(i <- 99 to 1 by -2){
  println(i)
}

break

/**
 * break跳出 整个for 循环
 * 格式:
 * breakable {
 *     for( 循环变量 <- 起点 to 终点) {
 *     
 *     break
 *    }
 *  }
 * 
 */
//
breakable {
  for (i <- 1 to 100) {
    // 如果遇到了第一个能整除9的数字就提前结束循环
    if (i % 9 == 0) {
      // 结束循环
      break
    }
    println(i)
  }
  
  
}
// breakable + break: 优化不是素数的情况:提前结束循环
      // Math.sqrt(n): 减少搜索范围
     val n = 97
    // 假设它是素数
    var isPrime = true
    breakable {
      for (i <- 2 to Math.sprt(n).toInt) {
        if (n % i == 0) { //能整除,结束循环
          println(s"${i}能整除")
          isPrime = false
          break
        }
        println(i)
      }
    }
     if(isPrime){
       println(s"${n}是素数")
     } else {
       println(s"${n}不是素数")
     }
  }
}