循环语句while

63 阅读2分钟

while循环

循环就是重复执行多次.

while格式

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

while(条件){}

循环体
i += 1

示例1

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

var i = 1
while(i<=3000){
  println(s"${i},i miss you")
  i += 1
}

示例2

输出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
}

示例3

求1-100的和

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

求1-100的奇数和(同示例2)

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

注:偶数和为 i += 0

示例4

求 1 + 1/2 + 1/3 + 1/4 ... + 1/100 的和

var sum:Double = 0
var i = 1
while(i<=100){
  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} 是闰年")
  } else {
    println(s"${year} 不是闰年")
  }
}

break

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

格式

breakable {  
      while (true) {  
          // 你的代码  
          break  
      }  
    }

示例

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

import scala.util.control.Breaks.{break, breakable} //注
object base09 {
  def main(args: Array[String]): Unit = {
    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循环

格式

do {  
   statement(s)
} while(条件)

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

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

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

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

案例

案例-求数列的和

求 1 - 1/2 + 1/3 - 1/4 ... + 1/19 的值

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

案例-复利公式

题目描述:假设某人的年化投资回报率是10%。也就是说投入1元之后:

第一年结束时有1.1元,计算过程是:1 *(1+10%) = 1.1

第二年结束时有1.21元,计算过程是:1.1*(1+10%) = 1.21元,

第三年结束时有1.331元,计算过程是:1.21*(1+10%) = 1.331元,

1、求它第10年结束时有多少元?

var i = 0
var money = 1.0
while(i < 20){
  money = money *1.1
  i = i + 1
}
println(s"第${i}年结束时,有${money}元")

2、多少年之后能超过1000元?

var i = 0
var money = 1.0
while(money < 1000){
  money = money *1.1
  i = i + 1
}
println(s"第${i}年结束时,有${money}元")