Scala内建控制-循环语句while

65 阅读2分钟

前提:了解 while 循环

while循环

//  while 的公式
/*
var i += 1     循环变量,控制重复的次数
while(条件) {
    循环体
    i += 1
}

一,while循环的格式

案例一

I miss you 循环十遍

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

案例二

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

object class02 {
  def main(args: Array[String]): Unit = {
    // 输出1—100内的奇数,每一个一行
    //第一种方法
    /*
    var i = 1
    while (i<=100){
      println(i)
      i += 2
    }
     */
    //第二种方法
    var i = 1
    while (i<=100){
      if(i%2 == 1){
        println(i)
      }
      i += 1
    }
  }
}

案例三

分别求出1-100的和,奇数和,偶数和

object calss03 {
  def main(args: Array[String]): Unit = {
    //求1-100的和
    var sum1 = 0
    var i1 = 1
    while (i1 <= 100){
      sum1 += i1
      i1 += 1
    }
    println(s"1到100的和为: $sum1")

    //求1-100的奇数和
    var sum2 = 0
    var i2 = 1
    while (i2 <= 100) {
      if (i2 % 2 != 0) {
        sum2 += i2
      }
      i2 += 1
    }
    println(s"1到100的奇数和为: $sum2")

    //求1-100偶数和
    var sum3 = 0
    var i3 = 1
    while (i3 <= 100) {
      if (i3 % 2 == 0) {
        sum3 += i3
      }
      i3 += 1
    }
    println(s"1到100的偶数和为: $sum3")
  }
}

注意:如何退出循环(案例和解释如下):

案例四:判断年份是否为闰年,输出 0 时退出程序。

分析:运用break

import scala.util.control.Breaks.{break,breakable}
object class05 {
  def main(args: Array[String]): Unit = {
    /*
    var i = 1
    while(i < 10){
      print(1)
    }
     */
    //如何从循环跳出来
    breakable{
      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("循环结束,程序退出")
  }
}

二,do while 循环的格式

格式案例如下

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

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

注意while 循环的区别:

//do while
//无论条件是否成立,都会执行一次
//while
//如果条件不成立,不会执行

案例一

求数列的和:s = 1/2 + 1/3 - 1/4 + 1/5-...+1/19的值

object class06 {
  def main(args: Array[String]): Unit = {
    //do while
    //无论条件是否成立,都会执行一次
    //while
    //如果条件不成立,不会执行
// do while 方法
    var sum = 0.0
    var i = 2
    var sign = 1
    do {
      sum += sign * (1.0 / i)
      sign = -sign
      i += 1
    } while (i <= 19)
    println(f"数列和为: $sum%.6f")
    // while 方法
    var sum1:Double = 0
    var j = 1
    if(j%2 == 1){
      sum1 = sum1 + 1.0 / j
    }else{
      sum1 = sum1 - 1.0 / j
    }
    j += 1
  }
  println()
}