scala基础篇·操作符

scala基础篇·操作符

代码:

package operator

/**
  * 分数
  * @param num 分子
  * @param den 分母
  */
class MyFraction(private val num: Int, private val den: Int) {

  /**
    * 分数乘法
    *
    * @param other
    * @return
    */
  def *(other: MyFraction): MyFraction = MyFraction(num * other.num, den * other.den)

  /**
    * 分数加法
    *
    * @param other
    * @return
    */
  def +(other: MyFraction): MyFraction = MyFraction(num * other.den + den * other.num, den * other.den)

  /**
    * 分数除法
    *
    * @param other
    * @return
    */
  def /(other: MyFraction): MyFraction = this * MyFraction(other.den, other.num)

  /**
    * 分数减法
    *
    * @param other
    * @return
    */
  def -(other: MyFraction): MyFraction = this + MyFraction(-1, 1) * other


  /**
    *
    * @return
    */
  def -(): MyFraction = MyFraction(-1 * num, den)

  /**
    * 值
    *
    * @return
    */
  def value: Double = if (den == 0) {
    throw new IllegalArgumentException("除数为0")
  } else {
    (num * 1.0) / den
  }

  /**
    * 倒数
    *
    * @return
    */
  def reciprocal(): MyFraction = MyFraction(den, num)

}

object MyFraction {
  /**
    * apply方法
    *
    * @param num
    * @param den
    * @return
    */
  def apply(num: Int, den: Int): MyFraction = new MyFraction(num, den)


  def main(args: Array[String]): Unit = {
    val a = MyFraction(1, 4)
    val b = MyFraction(1, 2)
    val va = a.value
    val vb = b.value
    println(s"加法:$va + $vb = ${(a + b).value}")
    println(s"减法:$va - $vb = ${(a - b).value}")
    println(s"乘法:$va * $vb = ${(a * b).value}")
    println(s"除法:$va / $vb = ${(a / b).value}")
    println(s"倒数:1/$va = ${a.reciprocal().value}, 1/$vb = ${b.reciprocal().value}")
    println(s"相反数:-$va = ${-a.value}, -$vb = ${-b.value}")
  }
}

输出:

加法:0.25 + 0.5 = 0.75
减法:0.25 - 0.5 = -0.25
乘法:0.25 * 0.5 = 0.125
除法:0.25 / 0.5 = 0.5
倒数:1/0.25 = 4.0, 1/0.5 = 2.0
相反数:-0.25 = -0.25, -0.5 = -0.5
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值