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)
  }

  

 

posted @ 2022-02-01 11:10  第厘  阅读(101)  评论(0编辑  收藏  举报