for(i:Int<-1 to 10){
println(i)}// 其实1 to 10 真正的写法应该是for(i <-1.to(10)){
println(i)}// range型的数据可以用by指定步长for(i <-1 to 10 by 2){
println(i)}// range型数据也可以倒序,但是要指定步长为-1for(i <-10 to 1 by -1){
println(i)}// 通过reverse关键字倒序for(i <-1 to 9 reverse){
println(i)}
1 until 10:生成1到10范围内的数据,包左不包右。
for(i <-1 until 10){
println(i)}
循环守卫(可用于代替continue的功能)
在循环条件中,可以同时加上判断条件,符合条件的循环才会被执行。
for(i <-1 to 10;if i %2==0){
println(i)}// 跳过i=3此次循环for(i <-1 to 10;if i !=3){
println(i)}
循环嵌套
Scala中,循环嵌套可以在一个小括号中指定两个循环条件。
基本格式:for(外层循环条件 ; 内层循环条件) {}
循环()可以用{}来代替
for(i <-1 to 3; j <-1 to 4){
println(i +"\t"+ j)}// scala中循环嵌套也可以用{}代替()for{
i <-1 to 3;
j <-1 to 4}{
println(i +"\t"+ j)}
引入变量
for(i <-1 to 4; j =4- i){
println(s"i=${i},j=${j}")}
循环返回值
Scala中for循环可以通过yield关键字,将循环体最后一句代码的值返回给Vector集合。
val ints: immutable.IndexedSeq[Int]=for(i <-1 to 5)yield i
println(ints)val ints2: immutable.IndexedSeq[Int]=for(i <-1 to 5)yield i *2
println(ints2)
练习
打印九九乘法表
for(i <-1 to 9; j <-1 to i){
print(s"${j} * ${i} = "+(j * i)+"\t")if(j == i){
println()}}
打印等腰三角形,如下,一共9层
/*
*
***
*****
*******
*/// i控制*的数量,j控制空格的数量,scala中可以用字符串与数字相乘做多次复制for(i <-1 to 9; j =9- i){
println(" "* j +"*"*(2*(i-1))+"*")}for(i <-1 to 17 by 2; j =(17- i)/2){
println(" "* j +"*"* i)}