基本运算和if语句

76 阅读3分钟

常用的位运算符:

十进制转化为二进制

// 位运算:把10进制在数转成二进制表示其中的某个数字
/**
 * 10进制  二进制
 * 0        0
 * 1        1
 * 2        10
 * 3        11
 * 4        100
 * 5        101
 * 6        110
 * ----------------------------
 * &按位运算符,0&1 = 0,1&0 = 0.0&0 = 0,1&1 = 1
 * 4&5  ---> 4
 *          4->1 0 0
 *          5->1 0 1
 *       $---------------------
 *              1 0 0 (4)
 *|按位运算符,0|1 = 1,1|0 = 1,0|0 = 0,1|1 = 1
 * 4/5 ---> 5
 *          4->1 0 0
 *          5->1 0 1
 *       |---------------------
 *              1 0 1 (5)
 */

基本规则(优先级):

1. 乘(*)除(/)模(%) > 加(+)减(-)
2. 算术(+-*/%)> 关系(><>=!=)> 赋值(=)**
3. && >||
def main(args: Array[String]): Unit = {
  val result =10 - 2 + 3 * 4 / 2 //为14
  val  a = true
  val b = false
  val c = false
  /**println(a || b && c) **///为true

浮点数精度问题

val  a = 0.1
val b = 0.2
val c = 0.3
println( 1 + 2 == 3)//true
println( 0.1 + 0.2 == 0.3)//false
//解决方案:使用BigDecimal()函数。
println( BigDecimal(0.1) + BigDecimal(0.2) ==  BigDecimal(0.3) )//true
println(0.1 + 0.1==0.2)//true

大数问题

object Base031 {
  def main(args: Array[String]): Unit = {
    var a =2147483647
    val b =1
    // val c = (a + b) /2 //Bug
    val c = a - (a-b)/2//高手算平均值
    println(c)
    //大数字做计算
    //11111111111111*22222222222222
    //val c:Double = 11111111111111111111111111111*1111111111111111111111111111
    //val d = BigInt(*111111111111111111111111111111111*)*BigInt(*111111111111111111111111111)
  //  println(c)
  //  println(d)

if语句

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

例题:

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

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

    // 读取用户输入的长方形长和宽
    print("请输入长方形的长b: ")
    val b = scala.io.StdIn.readDouble()

    print("请输入长方形的宽c: ")
    val c = scala.io.StdIn.readDouble()
    

    // 比较面积并输出结果
    if (a * a > b * c) {
      println("正方形面积大")
    } else if (a * a < b * c) {
      println("长方形面积大")
    } else {
      println("一样大")
    }
  }
}

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

object Base9171 {
  def main(args: Array[String]): Unit = {
    print("请输入一个正整数: ")
    val a = scala.io.StdIn.readDouble()
    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("输入的数有误")
    }
  }
}