Scala-Scala语言基础(三)Scala的循环

Posted on 2020-05-27 15:19  MissRong  阅读(1059)  评论(0)    收藏  举报

大数据技术之Scala

======第一篇:Scala编程语言=====

Scala语言基础(三)

Scala的循环

Scala拥有与Java和C++相同的while和do while循环

Scala中,可以使用for和foreach进行迭代

1)使用for循环案例:

 

 

 

 注意:

(1) <-  表示Scala中的generator,即:提取符

(2)第三种写法是第二种写法的简写

 在for循环中,还可以使用yield关键字来产生一个新的集合

 

 

在上面的案例中,我们将list集合中的每个元素转换成了大写,并且使用yield关键字生成了一个新的集合。

2)使用while循环注意使用小括号,不是中括号

 

3)使用do ... while循环

 

4)使用foreach进行迭代

 

 

 注意:在上面的例子中,foreach接收了另一个函数(println)作为值

5)程序整体实现

package basicXunhuan
import scala.math.sqrt
import scala.util.control.Breaks._
/**
  * scala 循环
  */

/**
  * object 相当于Java中的static(静态的)
  *
  * java中使用static关键字来表示静态,
  * Scala中没有static关键字,使用object来表示
  *
  * object中所有内容都是静态的
  */
object xunHuan {
  def main(args: Array[String]): Unit = {
    //定义一个集合
    var list= List("Mary", "Tom", "Mike")

    //1.for循环
    println("--------------for循环第一种写法------------------")
    //1)将list中的每一个元素依次赋给s,再直接打印出来,用小括号
    for(s<-list) println(s)

    println("--------------for循环第二种写法------------------")
    //2)打印出长度大于3的名字,用大括号
    for{
      s<-list
      if(s.length>3)
    }println(s)

    println("--------------for循环第三种写法------------------")
    //3)打印出长度小于等于3的名字,用小括号
    for (s<-list if s.length<=3) println(s)

    println("--------------for循环第四种写法------------------")
    //4)使用yield关键字
    // 作用:把list中的元素取出来都变成大写,返回一个新的集合
    var newList=for{
      s<-list
      s1=s.toUpperCase //把名字变成大写
    }yield (s1)
    for(s<-newList)println(s)

    //2.while循环
    println("--------------while循环写法------------------")
    //定义循环变量
    var i=0
    while(i<=list.length){
      println(i)
      i+=1   //自增,Scala里没有++
    }

    //3.do while循环
    println("--------------do while循环写法------------------")
    //定义循环变量
    var j=0
    do{
      println(j)
      j+=1
    }while(j<=list.length)

    //4.foreach循环写
    println("--------------foreach循环写法------------------")
    //foreach就是将list中每一个元素都取出来,赋给参数的函数
    // println 将list中的每一个元素打印出来
    list.foreach(println)

    println("--------------判断素数(质数)问题------------------")
    /**
      * 循环的嵌套
      * 判断101-200之间有多少个素数(质数)
      *
      * 素数就是用一个待测数分别除以大于1且小于自身的整数的数,如果能被整除,该待测数就不是素数;
      * 反之,如果待测数只能被自身或是1整除,就说明该待测数是素数
      *
      * 简单的来说,从2循环到根号下待测数就可以测试出该数是否为素数。
      */
    var index_iner=0
    var n=0 //用于累计素数的个数
    for(index_outer<-101 until 200) {
      var b=false //默认是素数,不能被整除
      breakable{
        index_iner=2
        while(index_iner<=sqrt(index_outer)){
          //判断是否是素数
          if(index_outer%index_iner==0){
            b=true //不是素数,被整除了
            break
          }
          //如果不能整除,就换下一个数作为新的除数
          index_iner+=1
        }
      }
      if(!b)n+=1 //如果不能被2-根号下它本身的数整除,就说明是素数
    }
    println("素数个数为:"+n)
    //素数个数为:21

    println("--------------累加问题------------------")
    /**
      * 求1-100的和
      */
    var sum=0 //用于累加做和
    for(x<-1 until 101) {
      sum+=x
    }
    print("1-100的和为:" + sum)
  }
}

 

博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3