(七)do while循环及for循环

71 阅读2分钟

(一)do while循环

object Base22 {
  def main(args: Array[String]): Unit = {
    // while
    // 特点: 先判断条件,再执行。所以,条件不满足时,循环体不会执行
    // do .... while
    // 特点: 至少要执行一次! 先执行,再判断条件。

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

    // var i = 100
    // while (i <= 10) {
    //     println(i)
    //     i = i + 1
    // }
    println("欢迎下次使用")
  }

}
如下示意图

屏幕截图 2025-09-24 082548.png

(二)计算 求s = 1 + 1/2 + 1/3 + 1/4 + 1/5...+1/19的值

object Base23 {
  def main(args: Array[String]): Unit = {
    // 计算 1 + 2 + 3 +... + 19 的和
    var i = 1
    var sum1 = 0
    while (i <= 19) {
      sum1 = sum1 + i
      i = i + 1
    }
    println(s"1 + 2 + 3 +... + 19 = $sum1")

//  求s = 1 + 1/2 + 1/3 + 1/4 + 1/5...+1/19的值
// 初始化和为0.0(使用Double类型以保留小数)
var sum = 0.0
// 从1循环到19
var i = 1
while (i <= 19) {
 // 累加1.0除以当前整数i
 sum += 1.0 / i
 i += 1
}
// 输出结果,保留6位小数
println(f"1 + 1/2 + 1/3 + ... + 1/19 = $sum%.6f")
}
}

(三)判断一个数,是不是素数?

object Base24 {
  def main(args: Array[String]): Unit = {
    // 判断一个数,是不是素数?
    // 素数,只有1和它本身能被整除。
    // 2, 3, 5, 7, 11, 13, ...... , 97
    // 思路
    // 1. 假设它是一个素数。
    // 2. 循环
    //    使用 2,3,4,...num-1 去除 num,如果能整除,说明 num 不是素数
    // 3. 循环结束,输出结果
    var num = 121
    var isPrime = true  // 假设是素数
    var i = 2
    while(i <= num -1) {
      if(num % i == 0) {
        isPrime = false
        println(s"$num 能被 $i 整除")
      }
      i += 1
    }

    if(isPrime){
      println(s"$num 是素数")
    } else {
      println(s"$num 不是素数")
    }
  }
}

(四)题目描述:

假设某人的年化投资回报率是 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 Base25 {
  def main(args: Array[String]): Unit = {
   var i = 0
    var money = 1.0 //本金
    // while(i < 10){
    while(money < 1000){
      money = money * 1.1
      i = i + 1
      println(s"第${i}年结束时,钱数为${money}")
      // 多少年之后能超过1000元
    }
    println(i)
  }
}

结果

屏幕截图 2025-09-24 104500.png

(五) 从1~10

object Base26 {
  def main(args: Array[String]): Unit = {
  for(i <- 1 to 10 ){
    println(i)
  }

  }
}

(六)如何输出1 ~ 100 之间的奇数?

object Base27 {
  def main(args: Array[String]): Unit = {
    // by:步长
    var sum = 0
    for(i <- 1 to 100 by 2 ){
      println(i)
      sum += i
    }
    println(sum)

  }
}

问题 1:求 s=1−21​+31​−41​+51​⋯+191​ 的值

object Base28 {
  def main(args: Array[String]): Unit = {
    var sum = 0.0
    for (i <- 1 to 19) {
      if (i % 2 == 1) {
        sum += 1.0 / i
      } else {
        sum -= 1.0 / i
      }
    }
    println(s"1 - 1/2 + 1/3 - 1/4 + ... + 1/19 的值为:$sum")
  }
}

问题 2:从键盘输入一个数,判断它是不是素数

import scala.io.StdIn

object Base29 {
  def main(args: Array[String]): Unit = {
    print("请输入一个数:")
    val num = StdIn.readInt()
    var isPrime = true
    if (num <= 1) {
      isPrime = false
    } else {
      for (i <- 2 to Math.sqrt(num).toInt) {
        if (num % i == 0) {
          isPrime = false
          // 只要能被一个数整除,就不是素数,提前退出循环
          return
        }
      }
    }
    if (isPrime) {
      println(s"$num 是素数")
    } else {
      println(s"$num 不是素数")
    }

  }
}

计算投资金额

object Base30 {
  def main(args: Array[String]): Unit = {
    object Investment {
      def main(args: Array[String]): Unit = {
        val rate = 0.1
        var money = 1.0
        // 1. 求第10年结束时的金额
        for (_ <- 1 to 10) {
          money = money * (1 + rate)
        }
        println(s"第10年结束时有 $money 元")

        // 2. 计算多少年之后能超过1000元
        money = 1.0
        var year = 0
        while (money <= 1000) {
          money = money * (1 + rate)
          year += 1
        }
        println(s"$year 年之后能超过1000元")
      }
    }
  }
}