6、scala中for语句
增强for循环(==java中的foreach循环)
def main(args: Array[String]): Unit = { var array = Array(11,22,33,44) for(a<-array){ println(a) } var array1 = List("zhangsan","lisi","wangwu") for(a1<-array1){ println(a1) } }
并列for循环
1、双重for循环的另一种体现形式 : 一个表达式中放两个条件
九九乘法表
def main(args: Array[String]): Unit = { for(a<-1.to(9);b<-1 to a){ print(b+"*" + a + "=" + (a * b ) + "\t ") if (a==b) println() } }
双重for循环
九九乘法表
def main(args: Array[String]): Unit = { for(a<-1 to 9){ for(b<-1 to a){ print(a+"*"+b+"="+(a*b)+"\t") } println() } }
冒泡排序
def main(args:Array[String]):Unit={ var arr = Array(3,34,5,17,1,20) for(i<- 0 until arr.length-1){ //比较回数 for(e<- 0 until arr.length-1-i){ //比较次数 if(arr(e)>arr(e+1)){ //进行比较,如果前面大于后面换位置 val tmp = arr(e) //声明一个临时变量 arr(e) = arr(e+1) arr(e+1) = tmp } } } for(e<-arr) println(e) } }
普通for循环
使用下标的形式
和java中的 for(int i =0 ; i<arr.length ; i++)一样的
取值范围方法
to :包前包后 until :包前不包后
def main(args: Array[String]): Unit = { val array = Array(11,22,33,44) //to是包前包后,取值的时候需要将数组的长度-1 for(a<-0 to array.length-1){ println(a) //打印的是所有数组的下标 println(array(a)) //打印数组中的每一个元素 } val list = List("zhangsan","lisi","wangwu") for(li<-0 until list.length){ println(li) println(list(li)) } }
守卫for循环
1、fou循环守卫是在for循环表达式中添加了: if选择判断语句;
求出1-100中的所有偶数
def main(args: Array[String]): Unit = { /* for(a<-1 to 100 if(a%2==0)){ println(a) } */ //使用yield val res = for(a<-1 to 100 if(a%2==0)) yield a for(r<-res){ println(r) } }
带返回值的for循环(yield关键字)
1、for是没有返回值的,如果想让for循环有返回值,使用 YIELD 关键字
2、FOR循环中的YIELD关键字会把当前的元素记下来,保存在集合中,循环结束后将返回该集合
3、注意 : 如果想让FOR循环有返回值,不能使用 { }
def main(args: Array[String]): Unit = { val arr = Array(56,45,43,23,21,67,98,100) val res = for (a<-arr) yield a*10 //yield关键字会把当前的元素记下来 //保存在集合中,循环结束后后将返回该集合 for(r<-res) println(r) }