scala基础编程案例--定义一个类Rational支持有理数的运算

这篇具有很好参考价值的文章主要介绍了scala基础编程案例--定义一个类Rational支持有理数的运算。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


1、案例要求

1)定义一个类Rational,分子与分母作为类参数;
2)重写toString方法;
3)前提条件检查(分母是否为0检查);
4)定义add方法实现两个有理数相加;
5)为 Rational 定义一个辅助构造函数,当分母为1时调用该辅助构造函数;
6)定义一个求分子分母最大公约数的方法,用于有理数的简化。

2、实现思路

1)定义一个类Rational,分子与分母作为类参数;

//有理数类
  class Rational(n: Int, d: Int) {}

2)重写toString方法;

//重写打印函数
    override def toString: String = {
      if (denominator != 1) numerator + "/" + denominator
      else numerator+""
    }

3)前提条件检查(分母是否为0检查);

//分母要求不能为0
    require(d != 0)

4)定义add方法实现两个有理数相加;

//实现分数加法函数
    def add(that: Rational): Rational = {
      new Rational(numerator * that.denominator + denominator * that.numerator,
        denominator * that.denominator)
    }

5)为 Rational 定义一个辅助构造函数,当分母为1时调用该辅助构造函数;

//辅助构造函数:若只传入一个参数,则构建n/1
    def this(n:Int) = this(n, 1)

6)定义一个求分子分母最大公约数的方法,用于有理数的简化。

	//求最大公约数
    private val g = gcd(n.abs, d.abs)

    //求最大公约数函数
    private def gcd(a: Int, b : Int) : Int =
      if (b == 0) a else gcd(b, a % b)
      
    //化简后的分子
    def numerator: Int = n/g

    //化简后的分母
    def denominator: Int = d/g
  

3、完整代码

object demo1 {
  //有理数类
  class Rational(n: Int, d: Int) {
    //分母要求不能为0
    require(d != 0)

    //辅助构造函数:若只传入一个参数,则构建n/1
    def this(n:Int) = this(n, 1)

    //化简后的分子
    def numerator: Int = n/g

    //化简后的分母
    def denominator: Int = d/g

    //重写打印函数
    override def toString: String = {
      if (denominator != 1) numerator + "/" + denominator
      else numerator+""
    }

    //实现分数加法函数
    def add(that: Rational): Rational = {
      new Rational(numerator * that.denominator + denominator * that.numerator,
        denominator * that.denominator)
    }

    //求最大公约数
    private val g = gcd(n.abs, d.abs)

    //求最大公约数函数
    private def gcd(a: Int, b : Int) : Int =
      if (b == 0) a else gcd(b, a % b)
  }

  //主函数
  def main(args: Array[String]): Unit = {
  	//测试
    var r = new Rational(1, 2)
    var r1 = new Rational(3, 6)
    println(r.add(r1))
    var r2 = new Rational(3, 6)
    println(r2)
  }

}

4、总结

scala编程总体上还是与java十分相似,但代码风格更加简洁高效,大家如果有余力的话,可以尝试实现该有理数类的减法、乘法、除法等运算!文章来源地址https://www.toymoban.com/news/detail-440226.html

到了这里,关于scala基础编程案例--定义一个类Rational支持有理数的运算的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包