黑马程序员-------Java笔记--------分数基本运算

———-android培训、java培训、java学习型技术博客、期待与您交流!——-

  • 上次考试考一题分数题,看了半天没明白,分析了一下,编程考的还是思想。
    <span style="font-size:18px;">package string.demo;
    //写一个分数类,实现2个分数相加,相减,相乘,相除,并约分
    /*
     * 思路:1.写一个分数类,成员变量有分子,分母,一个带参构造;
     * 		2.相加:新分子=分子A*分母B+分子B*分母A
     * 				新分母=分母A*分母B;
     * 		3.相减:新分子=分子A*分母B-分子B*分母A;
     * 				新分母=分母A*分母B;
     * 		4.相乘:新分子=分子A*分子B;
     * 				新分母=分母A*分母B;
     * 		5.相除:新分子=分子A*分母B;
     * 				新分母=分母A*分子B;
     * 		6.约分:求公约数x:分子和分母都%X==0
     * <strong>重点在每一次做完算术后怎么约分?
     * 采取循环遍历的模式,用三元运算符来取变量的初始值x,如果分子,分母都能被模尽,说明这个x是公约数。</strong>
     * */
    public class Demo2 {
    	public static void main(String[] args) {
    		Fen f1 = new Fen(6,9);
    		Fen f2 = new Fen(3,9);
    		
    		Fen d=f1.getJia(f2);
    		System.out.println(d);
    		
    		Fen d1=f1.getJian(f2);
    		System.err.println(d1);
    		
    		Fen d3=f1.getChen(f2);
    		System.err.println(d3);
    		
    		Fen d4=f1.getChu(f2);
    		System.err.println(d4);
    	}
    
    	
    }
    //分数类,成员变量:分子,分母。相加的方法,相减的方法,向乘的方法,相除的方法,约分
    class Fen{
    	int z;//分子
    	int m;//分母
    	public Fen(int z,int m){
    		this.z=z;
    		this.m=m;
    	}
    	
    	//相加
    	public Fen getJia(Fen f){
    		int newfz=f.z*m+z*f.m;
    		int newfm=f.m*m;
    		return yueFen(newfz,newfm);
    		
    	}
    	//相减
    	public Fen getJian(Fen f){
    		int newfz=f.z*m-z*f.m;
    		int newfm=f.m*m;
    		return yueFen(newfz,newfm);
    	}
    	//相乘
    	public Fen getChen(Fen f){
    		int newfz=z*f.z;
    		int newfm=m*f.m;
    		return yueFen(newfz,newfm);
    	}
    	//相除
    	public Fen getChu(Fen f){
    		int newfz=z*f.m;
    		int newfm=m*f.z;
    		return yueFen(newfz,newfm);
    	}
    	
    	//约分
    	<strong>private Fen yueFen(int newfz, int newfm) {
    		for(int x=(newfz>newfm?newfz:newfm);x>0;x--){//获取分子或者分母中大的那个数做为公约数的初始值
    			if(newfz%x==0&&newfm%x==0){//如果分子和分母都能被x模尽,那么x就是公约数
    				newfz=newfz/x;
    				newfm=newfm/x;
    			}
    		}
    		return new Fen(newfz,newfm);</strong>
    	}
    	public String toString(){
    		return "newFen="+z+"/"+m;
    	}
    }
    </span>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值