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

56 阅读1分钟

for语句的基本格式;

  • 基本格式如下:
for ( 循环变量 <- 数据集) {
  // 循环体代码  
}

例如1: 输出1 ~ 100。

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

例如2: 输出1 ~ 100 中的偶数。

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

for和while的区别;

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

循环守卫

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

  • 格式如下:

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

循环步长

  • 概念:每次循环之后,循环变量的自增数值。

  • 格式:

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

例如1:输出 1 ~ 100 中的奇数。

代码如下:

for(i <- 99 to 1 by -2){
  println(i)
}

breakable +break

  • 作用:提前结束循环。
  • breakable写在for循环内部。

例如1: 判断素数 。(只能被1 和它自己整除的数)

代码如下:

import scala.util.control.Breaks.{break, breakable}
 // breakable +break:优化不是素数的情况 提前结束循环
 // Math.sqrt(n):减少搜索的范围
 val n= 97
 // 假设他是素数
 var isPrime = true
 breakable{
 for (i <- 2 to Math.sqrt(n).toInt){
   if(n % i == 0) { //能整除 结束循环
     isPrime = false
     break
   }
   println(i)
   }
}
 if (isPrime){
   println(s"${n}是素数")
 } else{
   println(s"${n}不是素数")
 }

例如2:小球从100米高处自由落下,着地后又弹回高度的一半再次落下,如此重复。问经过多少次落地后,小球弹起的高度才会低于0.5米?

代码如下:


var h:Double = 100
var i = 0

while (h>=0.5){
  i += 1
  h = h * 0.5
}
println(i,h)