for循环

68 阅读2分钟

(一) for循环

1.如果循环变量的类型能被推断出来,是可以省略掉变量类型的。 2.这里的数据集可以是任意类型的数据集合,如字符串,集合,数组等等。

object base24 {
  def main(args: Array[String]): Unit = {

    /**
    *
    * for v.s. while
    * 1.for 适用于明确知道循环起点和终点。
    * 2.while
    *
    *
     */
    for(i <- 1 to 100 )
    if(i%2==0){
      println(i)
    }

  }

}

(二)循环守卫

可以在循环中添加条件,如果条件成立就执行循环。这个叫循环守卫。

object base25 {
  def main(args: Array[String]): Unit = {
    /**
     * 循环守卫
     * 当后面的条件都满足的时候,才去执行循环体的内容
     *
     * 格式:
     * for( 循环变量 <- 起点 to 终点; if(条件1); if(条件2);...if(条件3);){
     * println(循环变量)
     * }
     *
     *
     */
      // 输出1~100中能整除2,3,4的数字
    for(i <- 1 to 100;if(i%2 ==0);if(i%3 ==0);if(i%4 ==0)){
      println(i)
    }
  }
}

(三)循环步长

[提问]:如何输出1 ~ 100 之间的奇数?

按1,3,5... 这个格式来输出,这就涉及到步长。

格式1:1 to 5 by 2

格式2:Range(1,5,2)

object base26 {
  def main(args: Array[String]): Unit = {
    /**
     * 循环步长
     *   每次循环之后,循环变量的自增数值
     *
     * 格式:
     * for( 循环变量 <- 起点 to 终点 by 步长 ){
     * println(环境变量)
     * }
     */
     // 输出1~100 中的奇数
    for(i <- 1 to 100){
      println(1)
    }
  }
}

(四)循环的返回值

[提问]:之前学习过if的返回值,大家还记得吗? 怎么用的?

for也可以获取到返回值,使用yield

(五)continue

在scala中是没有break和continue关键字的,如果一定要用,可以用scala.util.control包下的Breaks类的break

import scala.util.control.Breaks.{break, breakable}

object base27 {
  def main(args: Array[String]): Unit = {
    /**
     * break跳出 整个for 循环
     * 格式:
     * breakable {
     *    for( 循环变量 <- 起点 to 终点) {
     *
     *       break
     *      }
     *
     * }
     *
     */
    //
    breakable {
      for (i <- 1 to 100) {
         // 如果遇到了第一个能整除9的数字就提前结束循环
         if (i % 9 == 0) {
           // 结束循环
           break
         }
         println(i)
      }
    }
  }
}