Scala的if语句

57 阅读3分钟

(一)if语句的格式和执行流程

Scala中的if语句的语法格式如下:

if(布尔表达式 1){  
   // 如果布尔表达式 1 为 true 则执行该语句块  
}else if(布尔表达式 2){  
   // 如果布尔表达式 2 为 true 则执行该语句块  
}else if(布尔表达式 3){  
   // 如果布尔表达式 3 为 true 则执行该语句块  
}else {  
   // 如果以上条件都为 false 执行该语句块  
}

(二)案例一判断是否成年

编写程序实现:提示用户输入年龄,判断是否成年。

def main(args: Array[String]): Unit = {

    // 从键盘输入一个年龄,判断是否成年

    val age = StdIn.readInt()

    if (age >= 18) {

      println("成年")

    }  else {

      println("未成年")

    }

  }

(三)案例二比较正方形和长方形面积大小

输入一个正方形的边长(a)及一个长方形的长与宽(b、c),然后比较两个图形的面积。如果长方形面积大,输出 “RECTANGLE”;如果正方形面积大,输出 “SQUARE”,如果一样大,输出 “SAME”。

下面为代码示范:

object Main {
  def main(args: Array[String]): Unit = {
    try {
      println("请输入正方形的边长:")
      val a = scala.io.StdIn.readDouble()

      println("请输入长方形的长和宽(用空格分隔):")
      val input = scala.io.StdIn.readLine().split("\s+")

      if (input.length < 2) {
        println("请输入两个数字!")
        return
      }

      val b = input(0).toDouble
      val c = input(1).toDouble

      // 验证输入是否为正数
      if (a <= 0 || b <= 0 || c <= 0) {
        println("请输入正数!")
        return
      }

      val squareArea = a * a
      val rectangleArea = b * c

      // 使用if语句比较
      if (rectangleArea > squareArea) {
        println("RECTANGLE")
      } else if (squareArea > rectangleArea) {
        println("SQUARE")
      } else {
        println("SAME")
      }

    }
  }
}

(四)案例三输入分数输出等级

[案例]输入正整数分数,输出对应的等级符号。规则如下:[90,100] 为 A 等;[80,89]  为 B 等;[70,79]  为 C 等;[60,69]  为 D 等;[0, 59]  为 E 等;

以下为代码示范:

object Main {
  def main(args: Array[String]): Unit = {
    try {
      println("请输入分数(0-100):")
      val score = scala.io.StdIn.readInt()
      
      if (score < 0 || score > 100) {
        println("分数必须在0-100之间")
      } else {
        // 使用if语句判断等级
        if (score >= 90) {
          println("A")
        } else if (score >= 80) {
          println("B")
        } else if (score >= 70) {
          println("C")
        } else if (score >= 60) {
          println("D")
        } else {
          println("E")
        }
      }
    } catch {
      case e: NumberFormatException =>
        println("请输入有效的整数分数")
      case e: Exception =>
        println("输入错误:" + e.getMessage)
    }
  }
}

(五)if语句的返回值

java中的if有返回值吗?

Scala中的if语句是有返回值的,它的执行过程如下:

val a= if(布尔表达式) {  
   表达式1  
} esle{  
   表达式2  
}

如果布尔表达式为true,则会把表达式1的值赋给变量a。如果布尔表达式为false,则会把表达式2的值赋给变量a。即如果布尔表达式为true,a=表达式1,否则,a=表达式2。

示例:判断一个数是奇数还是偶数

var i = 2;

var c = if(i%2 ==0){"偶数"} else {"奇数"}
object Main {
  def main(args: Array[String]): Unit = {
    // 示例1:使用val定义不可变变量
    val i = 2
    val result1 = if (i % 2 == 0) "偶数" else "奇数"
    println(s"数字 $i 是:$result1")

    // 示例2:使用var定义可变变量
    var j = 7
    var result2 = if (j % 2 == 0) "偶数" else "奇数"
    println(s"数字 $j 是:$result2")

    // 示例3:多行表达式的情况
    val k = 10
    val result3 = if (k % 2 == 0) {
      val message = "这是一个偶数"
      message  // 最后一行的表达式作为返回值
    } else {
      val message = "这是一个奇数"
      message  // 最后一行的表达式作为返回值
    }
    println(s"数字 $k 是:$result3")

    // 示例4:处理用户输入
    println("请输入一个整数:")
    val input = scala.io.StdIn.readInt()
    val result4 = if (input % 2 == 0) "偶数" else "奇数"
    println(s"您输入的数字 $input 是:$result4")

    // 判断正负数
    val num = -5
    val sign = if (num > 0) "正数" else if (num < 0) "负数" else "零"
    println(s"$num 是:$sign")
    
  }
}