Scala内建控制-循环语句while

44 阅读1分钟

while循环

循环就是重复执行多次。其格式如下:

    // while 循环的基本样式

    var i = 0 // 循环变量 控制重复次数
    while(条件){
      循环体
      i +=1
      } 
案例一:把 I miss you 重复输出10次?

代码如下:

var i =1
while (i <= 10){
  println(s"${i}.I miss you")
  i += 1
案例二:输出1~100内的奇数,每个一行?

代码如下:

// 方法一:
var i= 1
while (i <= 100){
  println(i) //println重复了100次
  i += 2
// 方法二:
var i= 1
while (i <= 100) {
  if(i % 2 != 0){
    println(i)
    }
  i += 1
} 
案例三:求1-100的和?

代码如下:

var sum = 0
var i = 1
while (i <= 100) {
    sum =sum +i
    i += 1
  } 
println(s"sum=${sum}")
案例三:求1-100的奇数和?

代码如下:

var sum = 0
var i= 1
while (i <= 100) {
sum = sum + i
i += 2
}
println(s"sum=${sum}")
案例四:求 1 + 1/2 + 1/3 +1/4 + 1/5+...+ 1/100 的和。

代码如下:

var sum =0.0
var i= 1
while (i <= 100) {
  sum = sum + 1.0/i
  i += 1
}
println(s"sum=${sum}")
案例五:求 1 - 1/2 + 1/3 -1/4 + 1/5+...+ 1/19的和?

代码如下:

var i = 1
var sum:Double =0
while (i <= 19){
  if (i % 2 == 1){
    sum = sum + 1.0/i
  } else {
    sum = sum - 1.0/i
  }
   i += 1
}
println(s"sum=${sum}")

while死循环

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

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

代码如下:

while (true){
  print("请输入要判断的年份(输入 0 就结束判断):")
  // 判断用户输入的年份 是否是闰年
  val year =scala.io.StdIn.readInt()
  if (year % 400 ==0 || (year %4==0 && year % 100 != 0 )){
    println(s"year=${year}是闰年")
  } else{
    println(s"year=${year}不是闰年")
  }
}

break

跳出循环,底层会抛出异常来跳出循环,外层捕获异常。

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 F923 {
  def main(args: Array[String]): Unit = {
    // 从循环中跳出来?
    // 输入 0 就结束判断
    breakable {
      while (true) {
        println("请输入要判断的年份(输入 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 ... whilewhile的区别!!

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

var i = 100
do {
  println(i)
  i += 1
} while (i<=10) // 会有执行的结果为 100

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

 var i = 100
 while (i<=10){
    println(i)
    i += 1 // 该程序条件不成立 不执行
  }