07内建控制-循环语句while

79 阅读1分钟

例:如何把”i miss you ”重复3次?

object base16 {
  def main(args: Array[String]): Unit = {
    var i=1
    while(i<4){
      println(s"$i.I miss you!")
      i =i+1
    }
  }
}

结果如图:

image.png

(一)while循环

格式:

while(condition) {
statement(s)
}

流程

image.png

例:输出1~100内的奇数,每个一行

object base17 {
  def main(args: Array[String]): Unit = {
    // 输出1~100内的奇数,每个一行
    var i= 1
    while (i<= 100){
      println(i)
      i +=1
    }
  }
}

结果如图:

image.png

例:求1-100的和

object base18 {
  def main(args: Array[String]): Unit = {
    //求1-100的和
    var sum = 0
    var i = 1
    while ( i<=100 ){
      sum = sum + i
      i += 1
    }
    println(sum)
  }
}

结果如图

image.png

(二)while死循环

在需要一直执行的时候,就可以使用死循环。例如,不停地判断用户的输入的内容是否是闰年。

例子:判断一个年份是否是闰年 根据国际标准,一个年份被视为闰年的条件是,如下条件满足任意一个:

(1)能够被4整除,并且不能被100整除的年份是闰年。

(2)能够被400整除的年份同样也是闰年。

object base19 {
  def main(args: Array[String]): Unit = {
    // while(true){
    // println("1")
    // }
    while (true){  //while死循环
      // 请输入一个年份,判断是否闰年
      print("请输入一个年份:")
      var year = scala.io.StdIn.readInt()
      if(year%400==0 || (year%4==0 && year%100!=0)){
        println(s"$year 是一个闰年")
      }else{
        println(s"$year 不是一个闰年")
      }
    }
  }
}

结果如图:

image.png

(三)break

如何跳出死循环

scala中没有现成的break关键字,而是使用面向对象的方式来代替,底层会抛出异常来跳出循环,外层捕获异常。

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

object base20 {
  def main(args: Array[String]): Unit = {
    // 1. 自动跳出:循环条件不成立,就会自动结束循环
    // 2. 手动跳出循环 break

    /**
     * breakable{
     * while(true){
     * // 循环的内容
     * if(某个特殊的条件成立){
     * break
     * }
     * }
     * }
     */

    breakable{
      // 不停地判断用户输入的年份是否闰年。当用户输入0的时候,结束程序
      while(true){
        // 请输入一个年份,判断是否闰年
        print("请输入一个年份:")
        val year = scala.io.StdIn.readInt()

        if(year == 0){
          break
        }

        if(year%400==0 || (year%4==0 && year%100!=0)){
          println(s"$year 是一个闰年")
        }else{
          println(s"$year 不是一个闰年")
        }
      }
    }
    println("欢迎下次使用")
  }
}

结果如图:

image.png

(四)do while循环

image.png

[强调]:do ... while 和while的区别在于,一定会执行一次。

object base21 {
  def main(args: Array[String]): Unit = {
    // while
    // 特点: 先判断条件,再执行。所以,条件不满足时,循环体不会执行
    // do ... while
    // 特点:至少要执行一次!先执行,再判断条件。

    var i = 100
    do{
      println(i)
      i = i + 1
    } while(i <= 10)

    // var i = 100
    // while(i <= 10){
    //   println(i)
    //   i = i + 1
    // }

    println("欢迎下次使用!")
  }
}

结果如图

image.png