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方法提供给使用者安全调用代码。

  • 相关阅读:
    贝叶斯在机器学习中的应用(一)
    使用ajax发送的请求实现页面跳转
    关于welcom-file-list 失效
    在新的线程中使用session 出现的问题
    关于innerHtml= 与 html() 区别
    request.getAttribute()和 request.getParameter()有何区别?
    __STL_VOLATILE
    声明一个返回特定类型函数指针的函数
    关于vue的基础概念
    Vue.js结合vue-router和webpack编写单页路由项目
  • 原文地址:https://www.cnblogs.com/zx224569/p/13766865.html
Copyright © 2011-2022 走看看