• 有理数类设计


    1.有理数类的代码

    package rationalNumber;
    
    public class RationalNumber {
    	private int integer = 0;// 整数
    	private int decimal = 0;// 小数
    
    	public int getInteger() {
    		return integer;
    	}
    
    	public void setInteger(int integer) {
    		this.integer = integer;
    	}
    
    	public int getDecimal() {
    		return decimal;
    	}
    
    	public void setDecimal(int decimal) {
    		this.decimal = decimal;
    	}
    
    	public void rational(String Num) {
    		int i = 0;
    		for (int j = 0; j < Num.length(); j++) {
    			if (Num.charAt(j) == '.') {
    				i = j;
    				break;
    			}
    		}
    		String x1 = "", x2 = "";
    		if (i != 0) {// 有小数部分
    			for (int j = 0; j < i; j++) {
    				x1 = x1 + Num.charAt(j);
    			}
    			for (int j = i + 1; j < Num.length(); j++) {
    				x2 = x2 + Num.charAt(j);
    			}
    		} else {
    			x1 = Num;
    			x2 = "0";
    		}
    		this.integer = Integer.valueOf(x1);
    		this.decimal = Integer.valueOf(x2);
    	}
    
    	public void add(String Num) {//加法
    		RationalNumber x = new RationalNumber();
    		x.rational(Num);
    		String x1 = Integer.toString(this.integer) + "." + Integer.toString(this.decimal);
    		String x2 = Integer.toString(x.integer) + "." + Integer.toString(x.decimal);
    		System.out.println(Double.valueOf(x1) + Double.valueOf(x2));
    	}
    
    	public void substract(String Num) {//减法
    		RationalNumber x = new RationalNumber();
    		x.rational(Num);
    		String x1 = Integer.toString(this.integer) + "." + Integer.toString(this.decimal);
    		String x2 = Integer.toString(x.integer) + "." + Integer.toString(x.decimal);
    		System.out.println(Double.valueOf(x1) - Double.valueOf(x2));
    	}
    
    	public void multiply(String Num) {//乘法
    		RationalNumber x = new RationalNumber();
    		x.rational(Num);
    		String x1 = Integer.toString(this.integer) + "." + Integer.toString(this.decimal);
    		String x2 = Integer.toString(x.integer) + "." + Integer.toString(x.decimal);
    		System.out.println(Double.valueOf(x1) * Double.valueOf(x2));
    	}
    
    	public void divide(String Num) {//除法
    		RationalNumber x = new RationalNumber();
    		x.rational(Num);
    		String x1 = Integer.toString(this.integer) + "." + Integer.toString(this.decimal);
    		String x2 = Integer.toString(x.integer) + "." + Integer.toString(x.decimal);
    		System.out.println(Double.valueOf(x1) / Double.valueOf(x2));
    	}
    
    }
    
    

    2.测试代码

    public class Main {
    	public static void main(String[] args) {
    		Scanner sc = new Scanner(System.in);
    		String num1 = sc.nextLine();
    		String num2 = sc.nextLine();
    		RationalNumber a = new RationalNumber();
    		a.rational(num1);
    		a.add(num2);
    		a.substract(num2);
    		a.multiply(num2);
    		a.divide(num2);
    	}
    
    }
    

    运行结果

    3.讨论

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

      c语言是将功能以函数形式写出,在类里将功能以方法形式集中,更便于使用

    2. 别人如何复用你的代码?

      导入rationalNumber包可以使用RationalNumber类

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

      依赖;影响。

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

      合适;有的细节不必关心,调用者只要关注调用public踩油门的方法。

  • 相关阅读:
    20181030-4 每周例行报告
    20181023-3 每周例行报告
    20181016-10 每周例行报告
    PSP总结报告
    第十二周例行报告
    对团队成员公开感谢
    第十一周例行报告
    第十周例行报告
    第九周例行报告
    第八周例行报告
  • 原文地址:https://www.cnblogs.com/jmuchenyunfei/p/13766787.html
Copyright © 2020-2023  润新知