Scala while语句的练习

34 阅读1分钟

案列一 :求数列的和

1 + 1/2 + 1/3 + 1/4 +... + 1/19 的和

/**
*  (1) 1 + 2 + 3 + 4 +... +19
*  (2) 1 + 1/2 + 1/3 + 1/4 +... + 1/19
*  (3) 1 - 1/2 + 1/3 - 1/4 +... + 1/19
*/
 var sum:Double = 0 // sum = 0 sum默认是Int
 var i = 1
 while (i <= 19) {
    // 如果i是奇数就是 -
    if (i % 2 == 1) {
        sum = sum + 1.0 / i
    } else {
      // 否则 就是 -
      i += 1
 }
 println(s"sum = ${sum}")

案列二 :从键盘上输入一个数,判断它是不是素数?

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

案列三 :小球从100米高处自由落下,着地后又弹回高度的一半再次落下,如此重复。问经过多少次落地后,小球弹起的高度才会低于0.5米?

var i = 0 // 落地的次数	    
var high = 100.0 // 初始为100米
while (high >= 0.5) {
    high = high / 2.0
    i += 1
    println(s"经过${i}次落地之后,小球的高度是${high}") 
}
println(s"--经过${1}次落地之后,小球高度是${high},小于0.5米的--")

案列四 :假设某人的年化投资回报率是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元,

求它第10年结束时有多少元?

var i = 0
var money = 1.0
while (i < 10){
    // 每一年的钱 都在去年的基础上增加10% === 乘以1.1
    money = money * 1.1
    i += 1
    println(s"${i} 年之后,有$money 元")
}
println(s"${10} 年之后,总的钱变成了:$money 元")

多少年之后能超过1000元?

var i = 0
var money = 1.0
while (money < 1000){
    // 每一年的钱 都在去年的基础上增加10% === 乘以1.1
    money = money * 1.1
    i += 1
    println(s"${i} 年之后,有$money 元")
}
println(s"${i} 年之后,总的钱变成了:$money 元")