if语句
if:表示“如果”,if语句在可以让程序有选择性地执行。
1. 单分支。 if(){}
2. 双分支 if(){} else {}
3. 多分支 if(){} else if(){} else if(){} else {}
eg1:
//输入用户年龄判断是否成年
println("请用户输入年龄:")
var age= scala.io.StdIn.readInt()
if(age >=18){
println("成年")
}else{
println("未成年")
}
执行流程:
if(布尔表达式 1){
// 如果布尔表达式 1 为 true 则执行该语句块
}else if(布尔表达式 2){
// 如果布尔表达式 2 为 true 则执行该语句块
}else if(布尔表达式 3){
// 如果布尔表达式 3 为 true 则执行该语句块
}else {
// 如果以上条件都为 false 执行该语句块
}
eg2:
输入一个正方形的边长(a)及一个长方形的长与宽(b、c),然后比较两个图形的面积。如果长方形面积大,输出 “RECTANGLE”;如果正方形面积大,输出 “SQUARE”,如果一样大,输出 “SAME”
println("请输入正方形的边长:")
var a=scala.io.StdIn.readInt()
println("请输入长方形的长:")
var b=scala.io.StdIn.readInt()
println("请输入长方形的宽:")
var c=scala.io.StdIn.readInt()
if(a*a>b*c){
println("SQUARE")
}else if(a*a==b*c){
println("SAME")
}else{
println("RECTANGLE")
}
eg3:
输入正整数分数,输出对应的等级符号。规则如下:[90,100] 为 A 等;[80,89] 为 B 等;[70,79] 为 C 等;[60,69] 为 D 等;[0, 59] 为 E 等
println("请输入正整数分数:")
var a=scala.io.StdIn.readInt()
if(a>100){
println("请输入正确的分数")
}
else if (a>=90){
println("A")
}else if(a>=80){
println("B")
}else if(a>=70){
println("C")
}else if(a>=60){
println("D")
}else{
println("E")
}
比较简洁但是不够严谨,以下为老师标准答案
println("请输入正整数分数:")
var a=scala.io.StdIn.readInt()
if(a>=90 && a<=100){
println("A")
}
else if (a>=80 && a<=89){
println("B")
}else if(a>=70 && a<=79){
println("C")
}else if(a>=60 && a<=69){
println("D")
}else if(a>=0 && a<=59){
println("E")
}else{
println(s"$a 不是有效范围的分数,请重新输入")
}
if语句的返回值
result
eg1:
println("请输入正整数分数:")
var a=scala.io.StdIn.readInt()
var result =if(a>=60){
"及格"
}else{
"不及格"
}
println(result)
如果a>=60时,满足条件表达式1输出“及格”,a<60则满足表达式输出2“不及格”。
while循环
1. while循环的格式
while(condition) {() // 满足条件就执行,如果条件一直满足,就一直执行。
statement(s)
}
练习eg1: 循环3000次“I miss you!”
var i=0
while(i <= 3000){
println(s"${i},I miss you!")
i+=1
}
println("循环结束")
i:循环变量,控制循环执行次数的变量。一般这个变量名就设置为i
起点不一定非要从零开始
eg2: 循环输出1~100内的奇数
var i=1
while(i <= 100){
println(i)
if(i%2 == 1)//方法一奇数,i处于2时,余数为1
i+=2 //方法二
}
println("循环结束")
eg3:输出1+2+3+4+5+6.....+100
var sum=0
var i =1
while(i <= 101){
//sum=sum+i
sum+=i
i+=1
//println(sum)
}
println(s"sum=$sum")
eg4:判断用户输入的年份是否是闰年(while死循环)
(在需要一直执行的时候,可以使用死循环,例如,不停的判断用户的输入的内容是非是闰年)
while(true){
print("请输入你要判断的年份:")
var year=scala.io.StdIn.readInt()
if(year%400==0 ||(year%4==0 &&year%100!=0)){
println(s"$year 是闰年")
}else{
println(s"$year 不是闰年")
}
}
eg5:输入1 - 1/2 + 1/3 - 1/4 + 1/5....+ 1/19的值
//1 - 1/2 + 1/3 - 1/4 + 1/5....+ 1/19
//
//(1)1+2+3+4+5.....+19
//(2)1 + 1/2+ 1/3 + 1/4 + 1/5....+ 1/9
//(3)1 - 1/2 + 1/3 - 1/4 + 1/5....+ 1/19
//
var sum:Double=0 //sum=0;sum默认是INt
var i =1 //设i=1
while(i <=19){
//如果i是奇数就是+
if(i%2==1){//能否被2整除判断奇数还是偶数
sum=sum+1.0/i //sum=0 + 1/0=0
}else{ //否则,就是-
sum-=1.0/i //sum=0 - 1/0=
}
i+=1
println(s"sum=${sum}")
eg6:从键盘上输入一个数,判断它是不是不是素数
1.只能被1和它本身整除的数是素数。2 3 5 7 11 13 17 19..
2.可以从2开始到n-1为止,依次去除这个数n,如果能被除,就跳出循环
3.在循环结束之后,检查循环变量的值,看看是不是n。如果是n就是素数,否则就不是
//判断一个数是不是素数
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不是素数
if(num % i == 0){
isPrime=false //不是素数
}
i +=1
}
if(isPrime){
println(s"$num是素数")
}else{
println(s"$num不是素数")
}
eg7:小球从100米高处自由落下,着地后又弹回高度的一半再次落下,如此重复。问经过多少次落地后,小球弹起的高度才会低于0.5米?
var i =0//落地的次数
var high = 100//初始值为100米
while(high >=0.5){
high = high / 2.0//若为2则700次时小球掉落高度为0,不准确。改为2.0增加小数
i+=100
println(s"经过次${i}落地之后,小球的高度是${high}")
}
println(s"--经过次${i}落地之后,小球的高度是${high},小于0.5米的--")
eg8:假设某人的年化投资回报率是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//此处把1改为1.0增加小数
while(i<=10){
//每一年的钱,都在去年的基础上增加10%======乘以1.1
money = money * 1.1
i += 1
println(s"$i 年之后,有 $money 元")
}
println(s"10年之后,总的钱变成了:$money")
2.多少年之后能超过1000元
var i = 0
var money = 1.0//此处把1改为1.0增加小数
while(money<=1000){//循环条件<=1000
//每一年的钱,都在去年的基础上增加10%======乘以1.1
money = money * 1.1
i += 1
println(s"$i 年之后,有 $money 元")
}
println(s"总的钱变成了:$money")
//第73年可以超过1000元