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

  • 相关阅读:
    phoenix 开发API系列 目录
    phoenix 开发API系列(三)phoenix api 结合数据库
    phoenix 开发API系列(二)phoenix 各类 api 实现方式
    phoenix 开发API系列(一)创建简单的http api
    golang 远程传输文件
    PAT-2019年冬季考试-甲级 7-3 Summit (25分) (邻接矩阵存储,直接暴力)
    PAT-2019年冬季考试-甲级 7-2 Block Reversing (25分) (链表转置)
    PAT-2019年冬季考试-甲级 7-1 Good in C (20分)
    PAT 甲级 树专题小结
    PAT 甲级 1020 Tree Traversals (25分)(后序中序链表建树,求层序)***重点复习
  • 原文地址:https://www.cnblogs.com/zx224569/p/13766865.html
Copyright © 2011-2022 走看看