内建控制-循环语句while2

63 阅读1分钟

do while循环

格式:

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

演示代码:输出1 - 10

[var i=1]()  
do{  
    println(s"i=$i")  
     i+=1  
  }while(i<= 10)

强调:do ... while 和while的区别在于,一定会执行一次。 写如下例子,说明一定会执行一次。

var i=1()  
do{  
    println(s"i=$i")  
     i+=1  
  }while(i<1)

案例-求数列的和

【教师读题】题目描述:求数列的和 求s= 1 - 1/2 + 1/3 - 1/4  + 1/5 .... +1/19的值。

object Main {
def main(args: Array[String]) = {
     var sum:Double = 0 // 不然写成 sum = 0; sum默认是Int
     var i = 1
     while(i <= 19) {
         // 如果i是奇数就是 +
         if(i%2 == 1){
            sum += 1.0 / i
         } else { // 否则,就是 -
            sum -= 1.0 / i
         }
         i += 1
     }
         println(s"sum=${sum}")
    }
}

通过代码验证,强调int类型和double类型的数据在计算过程中的区别。

案例-判断是否素数

从键盘上输入一个数,判断它是不是素数? 题目分析:

1. 只能被1和它本身整除的数是素数。2 3 5 7 11 13 17 19...

2. 可以从2开始到n-1为止,依次去除这个数n,如果能被除,就不是素数。

3. 设置一个变量,初始值为true,表示它是一个素数,在循环内部,如果有整除的情况,就把它设置为false。

4. 循环结束之后,检查变量的值,看看是不是素数。

object Main {
def main(args: Array[String]) = {
     var num = scala.io.StdIn.readInt()
     var isPrime:Boolean = true
     // 从 2 到 num-1,依次去除num, 如果有一个能整除,就说明它不是素数
     var i = 2
     while(i<=num -1){
         // 如果能整除: num % i == 0,说明isPrime不是素数
         i += 1
     }
     if(isPrime){
         println(s"$num 是素数")
     } else {
         println(s"$num 不是素数")
     }
}
}

【统一讲解】补充while内的代码。

     while(i<=num -1){

         // 如果能整除: num % i == 0,说明isPrime不是素数  
if(num%i==0) isPrime = false

         i += 1

     }
}

}
object Base23 {
  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} 不是素数")
    }
  }
}
object Base23 {
  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} 不是素数")
    }
  }
}

案例-弹跳小球

1. 循环执行的条件是>=0.5。

2. 在循环体内增加计数器。

3. 循环结束之后,输出计数器的值。

1. 循环执行的条件是>=0.5。

2. 在循环体内增加计数器。

3. 循环结束之后,输出计数器的值。

案例-复利公式

第一年结束时有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元?

【引导大家分析】

1. 循环执行的条件年份小于10。

2. 在循环体内增加money。

3. 循环结束之后,输出money的值。

【写初始代码】

object Main {
def main(args: Array[String]) = {
    var i = 0 // 年份
    var money = 1.0 // 初始金额
    while(i < 10){
        money = money * 1.1
        i+=1
        println(s"经过${i}年后,总金额是${money}")
    }
println(s"经过${i}年后,总金额是${money}")
 }
}