zoukankan      html  css  js  c++  java
  • 有理数类的设计

    仿照BigDecimal类以面向对象的方式设计有理数类。
    1.给出你的有理数类的代码。

    package p1;
    public class Rational{
          private int numerator;//分子
          private int denominator;//分母
    
          public Rational (int numerator,int denominator)//构造函数
          {
              this.numerator = numerator;
              this.denominator = denominator;
          }
    
          public int getNumerator()//获取分子
          {
              return this.numerator;
          }
    
          public int getDenominator()//获取分母
          {
              return this.denominator;
          }
     private static int gcd(int n,int d)//求最大公约数
        {
            int a = Math.abs(n);
            int b = Math.abs(d);
            int gcd = 1;
            for (int k=2;k<=a && k<=b;k++)
            {
                if(a%k==0&&b%k==0) {
                    gcd=k;
                }
            }
            return gcd;
        }
          public Rational add(Rational first,Rational second)//加法
          {
              int n = first.numerator * second.denominator + second.numerator * first.denominator;
              int d = first.denominator * second.denominator;
              return new Rational(n,d);
          }
    
          public Rational subtract(Rational first,Rational second)//减法
          {
              int n = first.numerator * second.denominator - second.numerator * first.denominator;
              int d = first.denominator * second.denominator;
              return new Rational(n,d);
          }
    
          public Rational multiply(Rational first,Rational second)//乘法
          {
              int n = first.numerator * second.numerator;
              int d = first.denominator * second.denominator;
              return new Rational(n,d);
          }
    
          public Rational divide(Rational first,Rational second)//除法
          {
              int n = first.numerator * second.denominator;
              int d = first.denominator * second.numerator;
              return new Rational(n,d);
          }
    
          public boolean equal(Rational first,Rational second) //判断是否相等
          {
              if ((first.numerator == second.numerator)&(first.denominator == second.denominator)) {
                  return true;
              } else {
                  return false;
              }
          }
    
          public int intValue()     //转换为int型
          {
              return this.numerator / this.denominator;
          }
          public long longValue()   //转换为long型
          {
              return (long)doubleValue();
          public double doubleValue()//转换为double型
          {
              return this.numerator*1.0 / this.denominator;
          }
          public float floatValue()  //转换为float型
          {
              return (float)doubleValue();
          }
          public String toString()   //转换为string型
          {
              return this.numerator + "/" + this.denominator;
          }
          }
     
    给出你的测试代码。要在与有理数类不同包的其他类中调用有理数类。
    类名、变量名命名需符合Java规范
    public class Main {
        public static void main(String[] args){
            Rational x=new Rational(1,6);
            Rational y=new Rational(3,5);
            System.out.println("x="+x.toString());
            System.out.println("y="+y.toString());
            System.out.println("x+y="+x.add(y));
            System.out.println("x-y="+x.subtract(y));
            System.out.println("x*y="+x.multiply(y));
            System.out.println("x/y="+x.divide(y));
            System.out.println(x.intValue());
            System.out.println(x.longValue());
            System.out.println(x.doubleValue());
            System.out.println(x.floatValue());
            System.out.println(x.toString());
        }
    }


    尝试描述怎么与c语言的有理数代码相比较,为什么你设计的类更加面向对象?

    设计的类有属性和方法,java倾向于面向对象,封装了很多类和接口,以功能来解决问题;而c语言倾向于面向过程,即程序要实现的功能步骤
    尝试从代码复用的角度来描述你设计的有理数类。从几个方面讨论。
    别人如何复用你的代码?         导入我的有理数类属性
    别人的代码是否依赖你的有理数类的属性?当你的有理数类的属性修改时,是否会影响他人调用你有理数类的代码?      依赖;会影响
    有理数类的public方法是否设置合适?为什么有的方法设置为private?      合适; 因为设置成private时,只有类的内部才能访问到,外部没法访问,可以保护数据;设置成public,可以被任意类访问,被调用时方便

  • 相关阅读:
    JS BOM对象 History对象 Location对象
    JS 字符串对象 数组对象 函数对象 函数作用域
    JS 引入方式 基本数据类型 运算符 控制语句 循环 异常
    Pycharm Html CSS JS 快捷方式创建元素
    CSS 内外边距 float positio属性
    CSS 颜色 字体 背景 文本 边框 列表 display属性
    【Android】RxJava的使用(三)转换——map、flatMap
    【Android】RxJava的使用(二)Action
    【Android】RxJava的使用(一)基本用法
    【Android】Retrofit 2.0 的使用
  • 原文地址:https://www.cnblogs.com/f-x-v-a-l-k/p/13766447.html
Copyright © 2011-2022 走看看