while循环
循环就是重复执行多次.
while格式
var i = 0 // 循环变量,控制重复的次数
while(条件){}
循环体
i += 1
示例1
如何把”i miss you ”重复输出3000次?
var i = 1
while(i<=3000){
println(s"${i},i miss you")
i += 1
}
示例2
输出1~100内的奇数
var i = 1
while (i<=100){
println(i)
i += 2
}
var i = 1
while (i<=100){
if(i%2 == 1) {
println(i)
}
i += 1
}
示例3
求1-100的和
var sum = 0
var i = 1
while(i<=100){
sum = sum + i
i += 1
}
println(s"sum=${sum}")
求1-100的奇数和(同示例2)
var sum = 0
var i = 1
while(i<=100){
sum = sum + i
i += 2
}
println(s"sum=${sum}")
注:偶数和为 i += 0
示例4
求 1 + 1/2 + 1/3 + 1/4 ... + 1/100 的和
var sum:Double = 0
var i = 1
while(i<=100){
sum = sum + 1.0/i //使用浮点型变量存储结果
i += 1
}
println(s"sum=${sum}")
while死循环
在需要一直执行的时候,就可以使用死循环
示例
不停地判断用户的输入的内容是否是闰年
while(true){
print("请输入想判断的年份(输入0时结束判断):")
val year = scala.io.StdIn.readInt()
if(year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)){
println(s"${year} 是闰年")
} else {
println(s"${year} 不是闰年")
}
}
break
底层会抛出异常来跳出循环,外层捕获异常。
格式
breakable {
while (true) {
// 你的代码
break
}
}
示例
判断用户输入的年份是否是闰年,如果用户输入0,则结束判断
import scala.util.control.Breaks.{break, breakable} //注
object base09 {
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(条件)
do while:无论条件是否成立,都会执行一次
var i = 100
do {
println(i)
i += 1
} while(i<=10)
while:如果条件不成立,不会执行
var i = 100
while(i<=10){
println(i)
i += 1
}
案例
案例-求数列的和
求 1 - 1/2 + 1/3 - 1/4 ... + 1/19 的值
var sum:Double = 0
var i = 1
while(i<=19){
if(i%2 == 1) {
sum = sum + 1.0/i
} else {
sum = sum - 1.0/i
}
i += 1
}
println(s"sum=${sum}")
案例-复利公式
题目描述:假设某人的年化投资回报率是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年结束时有多少元?
var i = 0
var money = 1.0
while(i < 20){
money = money *1.1
i = i + 1
}
println(s"第${i}年结束时,有${money}元")
2、多少年之后能超过1000元?
var i = 0
var money = 1.0
while(money < 1000){
money = money *1.1
i = i + 1
}
println(s"第${i}年结束时,有${money}元")