java实现分数相加减

package homework2;

public class Rational {
	int num;	//分子
	int den;	//分母
	 Rational(){
	 }
	Rational(int a,int b){
		if(a==0){
			num=0;
			den=1;
		}
		else{
			setNumAndDen(a,b);
		}
	}
	   void setNumAndDen(int a,int b) { //设置分子和分母
		      int c=f(Math.abs(a),Math.abs(b));           //计算最大公约数
		      num=a/c;
		      den=b/c;
		      if(num<0&&den<0) {
		          num=-num;
		          den=-den;
		      }
		   }
		   int getNum() {
		      return num;
		   }
		   int getDen() {
		     return den;
		   }  
		   int f(int a,int b) { //求a和b的最大公约数
		      if(a<b) {
		         int c=a;
		         a=b;
		         b=c; 
		      }
		      int r=a%b;
		      while(r!=0) {
		         a=b;
		         b=r;
		         r=a%b;
		      } 
		      return b;
		   }

	   Rational add(Rational r) {  //加法运算
	      int a=r.getNum();
	      int b=r.getDen();
	      int newNum=num*b+den*a;
	      int newDen=den*b;
	      Rational result=new Rational(newNum,newDen);
	      return result;
	   }
	   Rational sub(Rational r) {  //减法运算
	      int a=r.getNum();
	      int b=r.getDen();
	      int newNum=num*b-den*a;
	      int newDen=den*b;
	      Rational result=new Rational(newNum,newDen);
	      return result;
	   }


}

以上为类的封装

package homework2;

import java.util.Scanner;

public class MainClass {
	   public static void main(String args[]) {
		   Scanner scan = new Scanner(System.in);
	        int i = 0;
	        System.out.print("输入第一个数的分子:");
	            i = scan.nextInt();
	            int j = 0;
	            System.out.print("输入第一个数的分母:");
	                j = scan.nextInt();
	                int k = 0;
	                System.out.print("输入第二个数的分子:");
	                    k = scan.nextInt();
	                    int l = 0;
	                    System.out.print("输入第二个数的分母:");
	                        l = scan.nextInt();
	        scan.close();
		  Rational r1=new Rational(i,j);
	      Rational r2=new Rational(k,l);;
	      Rational result=r1.add(r2); 
	      int a=result.getNum();
	      int b=result.getDen();  
	      System.out.println( i+"/"+j+"+"+k+"/"+l+" = "+a+"/"+b);
	      result=r1.sub(r2);
	      a=result.getNum();
	      b=result.getDen();    
	      System.out.println( i+"/"+j+"-"+k+"/"+l+ " = "+a+"/"+b);
	   }
}

以上为主函数

可以实现分数加减法

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值