07内建控制-循环语句while

39 阅读1分钟

一. while循环

格式:

while(condition) {]()// 满足条件就执行,如果条件一直满足,就一直执行。  
  statement(s)  
}

流程:

屏幕截图 2025-09-18 094004.png

案例

打印 I miss you! 3000次


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

  // 如何打印 I miss you! 3000次
  // 循环 while

  var i = 1
  while (i < 3001) {
    println(s"$i. I miss you!")
    i = i + 1
  }

}

结果如图:

屏幕截图 2025-09-18 082918.png

练习

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


def main(args: Array[String]): Unit = {
  // 输出1~100内的奇数,每个一行

  var i = 1

  while (i <= 100) {
    println(i)   
    i += 2
  }
}

结果如图:

屏幕截图 2025-09-18 085708.png

求1-100的和


def main(args: Array[String]): Unit = {
  // 求1-100的和

  var sum = 0
  var i = 1
  while (i<=100){
    sum += i

    i += 1
  }

  println(s"1到100的和是: $sum")
}

结果如图:

屏幕截图 2025-09-18 085840.png

二. while死循环

在需要一直执行的时候,就可以使用死循环。

请输入一个年份,判断是否闰年


def main(args: Array[String]): Unit = {
  // 请输入一个年份,判断是否闰年
  while (true){
    print("请输入一个年份:")

    val year = scala.io.StdIn.readInt()
    if (year%400 == 0 || (year%4 == 0 && year%100 != 0)){
      println(s"$year 是一个闰年")
    }else{
      println(s"$year 不是一个闰年")
    }

  }

}

结果如图:

屏幕截图 2025-09-18 092020.png

三. 跳出循环

  1. 自动跳出。循环条件不成立,就会自动结束循环
  2. 手动跳出循环。break

判断用户输入的年份是否是闰年,如果用户输入0,则结束判断。


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

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

    breakable{
      // 不停地判断用户输入的年份是否闰年。当用户输入0的时候,跳出循环
      while (true) {
        print("请输入一个年份(输入0可以结束程序):")

        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("欢迎下次使用!")
  }

}

结果如图:

屏幕截图 2025-09-18 093449.png

四. do while循环

格式:

do {
statement(s);
} while( condition );

while 特点:先判断条件,再执行,所以,条件不满足时,循环体不会执行

do ... while 特点:至少执行一次! 先执行,再判断条件。

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

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

结果如图:

屏幕截图 2025-09-24 095401.png