if语句和while循环

66 阅读4分钟

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元