1.格式
基本用法:
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
}