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}")
}
}