内建控制-循环语句while

77 阅读1分钟

while格式

image.png

while流程

image.png

练习

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

object base12 {
  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
    }
  }

}

image.png

输出1到100间的奇数(俩种方法)

object base13 {
  def main(args: Array[String]): Unit = {
     // 输出1到100的奇数
    /* 第一种
    var i=1
    while (i<=100){
      println(i) // println重复了100次
      i +=2
    }
    */
    //第二种
    var i=1
    while (i<=100){
      if (i % 2 == 1 ){
        println(i)
      }
      i +=1
    }

  }

}

image.png

输出1到100的和

object base14 {
  def main(args: Array[String]): Unit = {
    // 求1到100的和
    // 等差数列:(100+1)*100/2=5050(首项+末项)*项数/2
    var sum =0
    var i=1
    while (i<=100){
      sum=sum+i
      i+=1
    }
    println(sum)
  }
}

image.png

输出1到100的奇数和

object base15 {
  def main(args: Array[String]): Unit = {
    // 求1到100的奇数和
  /*
  第一种
    var sum =0
    var i=1
    while (i<=100){
      sum=sum+i
      i+=2
    }

   */
    //第二种
    var sum=0
    var i=1
    while (i<=100){
      if (i%2==1){
        sum=sum+i
      }
      i+=1
    }
    println(s"sum=${sum}")

  }
}

image.png

输出1+1/2+...+1/100的和

object base16 {
  def main(args: Array[String]): Unit = {
    // 求1+1/2+....+1/100和
    var sum:Double =0
    var i=1
    while (i<=100){
      sum = sum+1.0 / i
      i+=1
    }
    println(s"sum=${sum}")
  }
}

image.png

while 死循环

让代码一直运行

退出死循环(breakable)

用法

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

练习

用while死循环判断年份是否是闰年,输入0退出死循环

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

object base17 {
  def main(args: Array[String]): Unit = {
    // while 死循环
    // 判断是否是闰年
    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("死循环结束了,系统退出!")

  }

}

image.png

do while

格式

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

流程

image.png

do while 与while 的区别!

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

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

object base18 {
  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
    }
  }
}

image.png

练习

求数列的和

s=1 - 1/2 + 1/3 - 1/4 + 1/5....+ 1/19的和

object base19 {
 def main(args: Array[String]): Unit = {
   //求数列的和
   // s=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}")
 }

}

题目描述:假设某人的年化投资回报率是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年结束时有多少元?

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

第一题

object base20 {
  def main(args: Array[String]): Unit = {
    var i = 0
    var money = 1.0
    while (i<10){
      money = money * 1.1
      i = i+1
    }
    println(s"第${i} 年结束时有${money}元")
  }

}

第二题

object base20 {
  def main(args: Array[String]): Unit = {
    var i = 0
    var money = 1.0
    while (money<1000){
      money = money * 1.1
      i = i+1
    }
    println(s"第${i} 年结束时有${money}元")
  }

}