内建控制-循环语句while

47 阅读1分钟

内容如下:

1. while循环的格式

2. do while 循环的格式

3. break的作用

4. while与do while的区别

(一)while循环

[提问]:如何把”i miss you ”重复输出3000次?

image.png

循环就是重复执行多次。

while格式

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

while流程

image.png

[编码示范]  打印输出1 到5的整数

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

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

问:求1-100的和

object Main {  
  def main(args: Array[String]): Unit = {  
    var sum:Int = 0  
    var i = 1  
    while(i <= 100){  
      sum += i  
      i += 1  
    }  
    println(sum)  
  }  
}

while死循环

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


object Main {  
  def main(args: Array[String]): Unit = {  
    while(true){  
      var year = scala.io.StdIn.readInt()  
      if(year%400 ==0 || (year%4==0 && year%100 !=0)) {  
println(s"$year 是闰年")  
      } else {  
         println(s"$year 不是闰年")  
      }  
      i += 1  
    }  
  }  
}

死循环是一个种非常使用的结果,它能确保核心逻辑一直被调用中。

(三)break

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

[编码示范]

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

通过特殊的语法操作,可以让代码变得简单一些。

[编码示范]:判断用户输入的年份是否是闰年,如果用户输入0,则结束判断。

object Main {  
  def main(args: Array[String]): Unit = {  
    breakable {  
  
    while(true){  
      var 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 不是闰年")  
      }  
    }  
  }  
}

(四)do while循环

[讲授]

格式:

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

示意图

image.png

演示代码:输出1 - 10

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

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

写如下例子,说明一定会执行一次。

var i=1  
do{  
    println(s"i=$i")  
     i+=1  
  }while(i<1)

案例: 求数列的和: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()
}