Scala的基本运算

64 阅读3分钟
十进制  二进制
1         1
2        10
3        11
4       100
5       101
6       110

object Base09 {
  def main(args: Array[String]): Unit = {
    // 位运算


    println(s"4&5=${4&5}")
    println(s"6&2=${6&2}") // 10  2
    println(s"6|2=${6|2}") //110  6

  }
}

结果

image.png


常用的位运算符如下:

1. & 按位与运算符。0&1 = 0,  1&0= 0 , 0&0 = 0, 1&1 = 1

2. | 按位或运算符。0|1 = 1,  1|0= 1 , 0|0 = 0, 1|1 = 1

3. ^ 按位异或运算符。0^1 = 1,  1^1= 0, 0^0 = 0

4. ~ 按位取反运算符

5. << 左移运算符。右边补零,放大。

6. >> 右移运算符。左边补零,缩小。

优先级顺序

1. 乘(*)除(/)模(%) > 加(+)减(-)

2. 算术(+-*/%) > 关系(><>=!=) > 赋值(=)

3. && >

示例

object Base10 {
  def main(args: Array[String]): Unit = {
    val result = 10 - 2 + 3 * 4 / 2
    println(result) // 问题1
    val a = true
    val b = false
    val c = false
    println(a || b && c) // 问题2
  }
}

结果

image.png

一种整数都有自己的表达范围,例如Int类型的最大值是2147483647,一旦超过了这个范围就会报错,或者是导致计算异常。

object Base12 {
  def main(args: Array[String]): Unit = {
    val a = 2147483647
    val b = 1
    val c = (a+b)/2
    println(c)
  }
}

结果

image.png

用BigInt(数字字符串)来解决这个问题。

object Base12 {
  def main(args: Array[String]): Unit = {
    val a = BigInt("123456789012345678901234567890")
    val b = BigInt("987654321098765432109876543210")
    println(a + b)
    println(a * b)

或者改变方法

object Base12 {
  def main(args: Array[String]): Unit = {
    val a = 2147483647
    val b = 1
    val c=a-(a-b)/2
    println(c)
  }
}

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

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

示例

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

object Base15 {
  def main(args: Array[String]): Unit = {
    print("请输入正方形边长:")
    val a=scala.io.StdIn.readInt()
    print("请输入长方形长:")
    val b=scala.io.StdIn.readInt()
    print("请输入长方形宽:")
    val c=scala.io.StdIn.readInt()
    if (c*b>a*a){
      println("RECTANGLE")
    }
    else if (c*b<a*a) {
      println("SQUARE")
    } else{
      println("SAME")
    }
  }
}

结果

image.png

示例

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


object Base16 {
  def main(args: Array[String]): Unit = {
    //[案例]输入正整数分数,输出对应的等级符号。规则如下:[90,100] 为 A 等;[80,89]  为 B 等;[70,79]  为 C 等;[60,69]  为 D 等;[0, 59]  为 E 等
    print("输入0~100的正整数:")
    val sum=scala.io.StdIn.readInt()
    if (sum>=90 && sum<=100) {
    println("A等")
    } else if (sum>=80 && sum<=89){
      println("B等")
    } else if (sum>=70 && sum<=79){
      println("C等")
    } else if (sum>=60 && sum<=69){
      println("D等")
    } else if (sum>=0 && sum<=59){
      println("E等")
    }else{
      println("输入错误")
    }
  }
}

结果

image.png