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

    1、代码

    public class RationalNumber {
    	private String numString;
    	private int numerator;
    	private int denominator;
    	private int pointIndex;
    	@Override
    	public String toString() {
    		// TODO Auto-generated method stub
    		StringBuilder toToString = new StringBuilder();
    		toToString.append(this.numerator / this.denominator);
    		toToString.append('.');
    		toToString.append(this.numerator % this.denominator);
    		return toToString.toString();
    	}
    	public int getNumerator() {
    		return numerator;
    	}
    	public int getDenominator() {
    		return denominator;
    	}	
    	//无参构造法
    	public RationalNumber() {
    		// TODO Auto-generated constructor stub
    		this.numString = "0.0";
    		this.pointIndex = 1;
    		this.numerator = 0;
    		this.denominator = 1;
    	}
    	//字符串构造法
    	public RationalNumber(String numStr) {
    		this.numString = numStr;
    		this.pointIndex = numStr.lastIndexOf('.') ;
    		this.denominator = (int) Math.pow(10, this.pointIndex - 1);
    		String tmpString = numStr.substring(0, this.pointIndex) + numStr.substring(this.pointIndex+1, numStr.length());
    		this.numerator = Integer.parseInt(tmpString);
    	}	
    	public String getNumString() {
    		return numString;
    	}
    	public int getPointIndex() {
    		return pointIndex;
    	}
    	//分子分母构造法
    	private RationalNumber(int numerator, int denominator){
    		this.numerator = numerator;
    		this.denominator = denominator;
    	    this.numString = toString();
    	    this.pointIndex = numString.lastIndexOf('.');
    	}
    	
    	//相加
    	public RationalNumber add(RationalNumber toNumber) {
    		 int minCommonMultiple = minCommonMultiple(this.denominator, toNumber..getDenominator());
    		 int newNumerator = (minCommonMultiple/this.denominator) * this.numerator +
    				 (minCommonMultiple/toNumber.getDenominator()) * toNumber.getNumerator();
    		 return new RationalNumber(newNumerator, minCommonMultiple);
    	}
    	//相减
    	public RationalNumber subtract(RationalNumber toNumber)
            {
                  int newNumerator = this.numerator * toNumber.getDenominator() - this.denominator * toNumber.getNumerator();
                  int newDenuminator = this.denominator * toNumber.getDenominator();
                  return new RationalNumber(newNumerator, newDenuminator);
            }
    	//相乘
            public RationalNumber multiply(RationalNumber toNumber)
            {
                  int newNumerator = this.numerator * toNumber.getNumerator();
                  int newDenuminator = this.denominator * toNumber.getDenominator();
                  return new RationalNumber(newNumerator,newDenuminator);
            }
            //相除
            public RationalNumber divide(RationalNumber toNumber)
            {
                  int newNumerator = this.numerator * toNumber.getDenominator();
                  int newDenuminator = this.denominator * toNumber.getNumerator();
                  return new RationalNumber(newNumerator, newDenuminator);
            }    
    	//最小公倍数
    	public static int minCommonMultiple(int m, int n) {
    		return m * n / gcd(m, n);
    	}	
    	//最大公约数
    	public static int gcd(int n,int d){
            int n1=Math.abs(n);
            int n2=Math.abs(d);
            int tmp;
            while (n2 != 0) {
                tmp = n1 % n2;
                n1 = n2;
                n2 = tmp;
            }
            return n1;
        }
    }
    

    2、测试代码

    3、测试结果

    4、讨论

    1、别人如何复用你的代码?

    导入我的有理数类包

    2、别人的代码是否依赖你的有理数类的属性?当你的有理数类的属性修改时,是否会影响他人调用你有理数类的代码?

    会依赖,会影响到

    3、有理数类的public方法是否设置合适?为什么有的方法设置为private?

    合适,private方法仅在该类中提供给代码编写者,可以保护一些重要代码不被使用者更改。public方法提供给使用者安全调用代码。

  • 相关阅读:
    肯恩·威尔伯:整合灵性途径的几大障碍
    金刚经里面的「应无所住而生其心」,这句话怎么理解?
    成熟是人一辈子的修养,与年龄无关
    杰克·康菲尔德:灵性成熟的十个特质
    杰克·康菲尔德:我是谁?(强烈推荐)
    x11vnc:利用远程机器上的X-Server来进行VNC连接(x11vnc 和 x-server 在不同的机器上)
    Linux ALL:Tigervnc-Server
    Centos 6/Redhat 6:远程图形桌面: tigervnc
    Fedora 31 :远程图形桌面: tigervnc
    win server 2019 :【2个?远程管理用户(单会话?)】升级为远程桌面服务【多用户(多会话)】
  • 原文地址:https://www.cnblogs.com/zx224569/p/13766865.html
Copyright © 2011-2022 走看看