Scala内建控制-循环语句while

70 阅读1分钟

1.while循环的格式

2.break的作用

3.do while 循环的格式

4.while与do while的区别

while循环的格式

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

while循环

循环就是重复执行多次

如何把”i miss you ”重复输出3000次?

object base19 {
  def main(args: Array[String]): Unit = {
    // 把I miss you重复输出3000次

    // while 循环的基本公式

    /*
    var i = 0 // 循环变量,控制重复的次数

    while(条件){
      循环体
      i += 1
    }
    */
    var i = 1
    while( i<= 3000){
      println(s"${i}.I miss you")
      i += 1
    }
  }
}

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

object demo03 {
  def main(args: Array[String]): Unit = {
    // 把 1,2,3,4,5,...100 中的奇数输出
    var i = 1

    // while(i<=100){
    //   println(i) // println重复了100次
    //   i += 2
    // }
    while(i <= 100){
      if(i % 2 == 1){ // 奇数
        println(i)
      }
      i += 1
    }
  }
}

求1-100的和

object demo04 {
  def main(args: Array[String]): Unit = {
    // 1 + 2 + 3 + 4 + 5 + ..... + 100 的结果
    // 等差数列: (100+1) * 100 / 2 = 5050

    var sum = 0
    var i = 1
    while(i<=100){
      sum = sum + i
      i += 1
    }
    println(s"sum=${sum}")
  }
}

求 1 - 100 的奇数和

object demo04 {
  def main(args: Array[String]): Unit = {
//     求 1 - 100 的奇数和
    while (i <= 100) {
      if (i % 2 != 0) {  // 判断是否为奇数
        sum += i
      }
      i += 1
    }
    println(s"1到100的奇数和为: $sum")
  }
}

while死循环

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

例如,不停地判断用户的输入的内容是否是闰年

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

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

    // 从循环中跳出来?
    // 输入0 就结束判断
  breakable{
    while(true) {
      print("请输入要判断的年份(输入 0 就结束判断):")
      // 判断用户输入的年份,是否闰年
      val year = scala.io.StdIn.readInt()

      if(year == 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("死循环结束了....系统退出")
  }
}

break的作用

跳出死循环

import scala.util.control.Breaks._  
object Main {  
  def main(args: Array[String]): Unit = {  
    breakable {  
      while (true) {  
          // 你的代码  
          break  
      }  
    }  
  }  
}

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

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

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

    // 从循环中跳出来?
    // 输入0 就结束判断
    breakable {
      while (true) {
        print("请输入要判断的年份(输入 0 就结束判断):")
        // 判断用户输入的年份,是否闰年
        val year = scala.io.StdIn.readInt()

        if (year == 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循环

格式:

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

输出1 - 10

object demo07 {
  def main(args: Array[String]): Unit = {
  // do while:无论条件是否成立,都会执行一次
  // while: 如果条件不成立,不会执行

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

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

while与do while的区别

do while:无论条件是否成立,都会执行一次

while: 如果条件不成立,不会执行

object demo08 {
  def main(args: Array[String]): Unit = {
  // 求1 - 1/2 + 1/3 - 1/4 + 1/5 .... + 1/19 的和
    var sum:Double = 0
    var i = 1
    while(i<=100){
      if(i%2 == 1){
        sum = sum + 1.0 / i // 1/3
      } else {
        sum = sum - 1.0 / i // 1/2
      }
      i += 1
    }
    println(s"sum=${sum}")
  }
}

实际解决问题:

求数列的和

object demo08 {
  def main(args: Array[String]): Unit = {
  // 求1 - 1/2 + 1/3 - 1/4 + 1/5 .... + 1/19 的和
    var sum:Double = 0
    var i = 1
    while(i<=100){
      if(i%2 == 1){
        sum = sum + 1.0 / i // 1/3
      } else {
        sum = sum - 1.0 / i // 1/2
      }
      i += 1
    }
    println(s"sum=${sum}")
  }
}