scala的for循环语句

69 阅读1分钟

1.格式

屏幕截图 2025-09-24 145742.png

基本用法:

for (j<-1 to 5){   //1,2,3,4,5
  println(j)
}

for (i<-1 until 5){  //1,2,3,4  
   println(i)       //1 until 5 等价于 Range(1,5)
}

for循环比while循环更简洁

案例1:输出1-20

//方法一
var i = 1
while (i<=20){
  println(i)
  i +=1
}
 
//方法二
for(i<-1 to 20){
  println(i)
}

2.步长

//1 2 3 4 5 6 7 8 (步长:1)
//1 3 5 7 9 11 13 (步长:2)
for (i<-1 to 20 by 2){
  println(i)
}

3.循环守卫

案例2:输出1-20的偶数

for(j <- 1 to 20; if(j%2==0)){
  println(j)
}

4.for循环的返回值

  // for循环值是一个列表,里面保存了多个值
  val rs = for(i <- 1 to 4) yield {
    i*2
  }
  println(rs) //Vector(2,4,6,8)
  println(rs(0))
  println(rs(1))
  println(rs(2))

练习题

1. 1-1/2+1/3-1/4+1/5 ... +1/19的结果

var sum = 0.0
var i = 1
for(i <- 1 to 19){
    if(i % 2 == 1){
        sum += 1.0 / i
    } else {
        sum -= 1.0 / i
    }
}
	println(s"结果是:$sum")

2. 打印1-100,每行包括一组5个数,每组换行

    for(i<-1 to 100){
//     println(i)
//      print(s"$i ")  //print不换行
      printf("%4d",i)  //%4d表示以固定宽度4个字符的格式输出整数
      if(i % 5 == 0){
        println()  //println换行
      }
    }

3.输入一个正整数n,输出斐波那契数列的前n项(第1,2项为1,每一项为前两项之和)

print("输入n的值(大于等于3):")
var n = scala.io.StdIn.readInt()
var a = 1
var b = 1
println(s"第${1}项是:${1}")
println(s"第${2}项是:${1}")
for(i <- 3 to n){
  var c = a + b
  println(s"第${i}项是:${c}")
  a = b
  b = c
}