Scala 的While循环语句

49 阅读1分钟

(一) While的格式

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

eg1. :把I miss you 重复输出3000次

object Main{
    def main(args: Array[String])={
      
      /*
      var i=0 //  循环变量 控制重复次数
      
      while(条件){
          循环体
          i+=1
      }
      */
      var i =1
      while(i<=3000){
          println(s"${i}.I miss you")
           i+=1
      }
    }
}

eg2.输出1到100中的奇数

object Test {
  def main(args: Array[String]): Unit = {
    // 打印1到100中奇数
    var i = 1
    while (i <= 100) {  // 建议将i < 100改为i <= 100,逻辑更严谨
      if (i % 2 == 1) {
        println(i)
      }
      i += 1  // 添加i的递增语句
    }
  }
}


eg3. 计算1+2+3+4+5....+100

object base13 {
  def main(args: Array[String]): Unit = {
    var sum = 0
    var i = 1
    while (i <= 100) {
      sum = sum + i  // 累加操作移出if条件,单独作为语句执行
      i += 1         // 循环变量自增(原代码遗漏,会导致死循环)
    }
    println(sum)  // 打印最终总和
  }
}

eg4. 计算1到100的奇数和

object base13 {
  def main(args: Array[String]): Unit = {
    var sum = 0
    var i = 1
    while (i <= 100) {
      if (i % 2 == 1) {
        sum = sum + i  
      }
      i += 1
    }
    println(s"sum=${sum}")
  }
}

eg5: 计算1/1 + 1/2 + 1/3 + …… + 1/100的和并输出结果


object base14 {
  def main(args: Array[String]): Unit = {
    var sum = 0.0
    var i = 1
    
    while (i <= 100) {
      sum += 1.0 / i
      i += 1
    }
    
    println(f"1到100的倒数和为: $sum%.5f")
  }
}

(二)scala中while的死循环

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

eg1:判断用户输入的年份是否闰年

import scala.util.control.Breaks.{break, breakable} //不用写 会自动生成

object base13 {
  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( condition );

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

eg1:求s=1-1/2+1/3-1/4+1/5...+1/19的值

object base14 {
  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<=20){
      if(i%2==1){
        sum =sum +1.0/i

      }else {

        sum =sum -1.0/i
      }
      i+=1
    }
    println(s"sum=${sum}")
    }
}

eg2.求money

假设某人的年化投资回报率是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}元")
  }

}