问题;

对分数进行四则运算,使结果仍然是分数

代码:

Test.java

public class Test {

public static void main(String[]args){

Rational r1=new Rational();

Rational r2=new Rational();//声明两个分数对象

r1.setNumAndDen(3,5);

int r1fenzi=r1.getNum();

int r1fenmu=r1.getDen();//输入第一个分数并化简

r2.setNumAndDen(3,2);

int r2fenzi=r2.getNum();

int r2fenmu=r2.getDen();//输入第一个分数并化简

Rational result=r1.add(r2);

int resultFenzi=result.getNum();

int resultFenmu=result.getDen();//得到结果

System.out.printf("\n%d/%d+%d/%d=%d/%d",r1fenzi,r1fenmu,r2fenzi,r2fenmu,resultFenzi,resultFenmu);

result=r1.sub(r2);//减法

resultFenzi=result.getNum();

resultFenmu=result.getDen();//得到结果

System.out.printf("\n%d/%d-%d/%d=%d/%d",r1fenzi,r1fenmu,r2fenzi,r2fenmu,resultFenzi,resultFenmu);

result=r1.muti(r2);//乘法

resultFenzi=result.getNum();

resultFenmu=result.getDen();//得到结果

System.out.printf("\n%d/%d*%d/%d=%d/%d",r1fenzi,r1fenmu,r2fenzi,r2fenmu,resultFenzi,resultFenmu);

result=r1.div(r2);//除法

resultFenzi=result.getNum();

resultFenmu=result.getDen();//得到结果

System.out.printf("\n%d/%d/%d/%d=%d/%d",r1fenzi,r1fenmu,r2fenzi,r2fenmu,resultFenzi,resultFenmu);

}

}

Rational.java

public class Rational {

int num;

int den;

void setNumAndDen(int fenzi,int fenmu){

int m=1,n=1;

if(fenzi<0)

m=-1*fenzi;

if(fenmu<0)

n=-1*fenmu;

if(fenzi==0){

num=0;

den=1;

return ;

}

int c=f(m,n);//把输入的分数进行约分

num=fenzi/c;

den=fenmu/c;

if(num<0&&den<0){

num=-num;

den=-den;//如果分子和分母都是负的,那就转换为正的

}

}

int getNum(){

return num;

}

int getDen(){

return den;

}

int f(int a,int b){

if(a

int c=a;

a=b;

b=c;

}//转换使运算的时候a是最大的再进行求最大公约数

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();//新的分数

result.setNumAndDen(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();//新的分数

result.setNumAndDen(newNum,newDen);//再进行判断约分

return result;

}

Rational muti(Rational r){//乘法运算

int a=r.getNum();

int b=r.getDen();//得到分子分母

int newNum=num*a;//分子等于两数的分子相乘

int newDen=den*b;//分母都与两个分母相乘

Rational result=new Rational();//新的分数

result.setNumAndDen(newNum,newDen);//再进行判断约分

return result;

}

Rational div(Rational r){//除法运算

int a=r.getNum();

int b=r.getDen();//得到分子分母

int newNum=num*b;//

int newDen=den*a;//改为乘以倒数的形式

Rational result=new Rational();//新的分数

result.setNumAndDen(newNum,newDen);//再进行判断约分

return result;

}

}

运行结果:

java有理数类的封装_第4章类与对象==有理数的类封装(分数的四则运算)相关推荐

  1. java 注册探探账号_零基础手把手教你开发探探类社交软件Tinder

    原标题:零基础手把手教你开发探探类社交软件Tinder 目录介绍 1.关于项目App整体架构 1.1项目整体架构 1.1.1 目前项目使用架构 1.1.2 目前常见的架构 1.1.3 MVP架构优点及 ...

  2. java 获取 t 的类型_如何获取类型为T的字段的类?

    我为某些SpringMVC控制器编写JUnit测试.JUnit测试的初始化对于我的所有Controllers测试都是通用的,因此我想创建一个抽象类来执行此初始化. 因此,我创建了以下代码: @RunW ...

  3. java怎么写dnf辅助_易语言地下城与勇士辅助自动刷图类源码

    DNF辅助自动刷图类 仅供学习参考,禁止商业用途 .版本 2 .支持库 EThread .支持库 spec .程序集 自动 .子程序 自动刷图 .判断开始 (全局_总开关.自动刷图开关 = 假) 全局 ...

  4. java.util.list源码_关于fest-util源码包Collections集合工具类过滤、判空、格式化及复制克隆处理...

    一.前言 关于fest-util源码包org.fest.util.Collections集合处理类,实现对数组转换List序列集合.集合duplicatesFrom克隆复制.集合判空isEmpty.并 ...

  5. java 通过反射得到命名空间_利用反射得到一个命名空间下的所有类,并调用?...

    当年话下 Assembly.LoadFrom("assemblyName").GetTypes();Assembly.Load("assemblyName"). ...

  6. java 获取操作系统临时目录_获取当前操作系统的临时目录对象或者地址

    p**a添加了笔记:engine = n... p**a添加了笔记:boolean eq... y**4在课程中提出了问题:package co... y**o向课程作业中提交了代码 p**a添加了笔 ...

  7. java未将对象引用设置_未将对象引用设置到对象的实例,怎么解决啊??

    展开全部 意思是你使用这个对象之前没有将之实例化. 例如: Label l = new Label: 这个是已经实例化了,可以e68a84e8a2ad3231313335323631343130323 ...

  8. Java课设对对碰_第11章对对碰游戏(图形版)(Java游戏编程原理与实践教程课件).ppt...

    游戏界面和相关图片素材 11.3 程序设计的步骤 11.3.1 设计游戏窗口类(GameRoom.java) 游戏窗口类GameRoom实现游戏全部功能,继承JFrame组件实现的.是由上方Panel ...

  9. python中属性和类级变量_六、Python类变量和实例变量(类属性和实例属性)

    我们知道,无论是在类中定义的属性还是方法,在类的外部,都无法直接调用它们,因此,我们完全可以把类看做是一个独立的作用域(称为类命名空间),则类属性其实就是定义在类命名空间内的变量(类方法其实就是定义的 ...

最新文章

  1. 防止IFRAME页被嵌套
  2. 用tf的VocabularyProcessor创建词汇表vocab
  3. java虚拟机的生命周期
  4. html5晋级之路-css背景
  5. 《BI那点儿事》数据流转换——派生列
  6. SQL 查询笔记:子查询,分组查询,左连接查询。。。。。
  7. 黑客攻防技术宝典web实战篇:利用信息泄露习题
  8. iOS入门-公司通讯录项目(教你一步步完成一个公司通讯录)
  9. 数字集成电路物理设计_数字世界的物理词汇
  10. cpu之RegDst_Ins
  11. 一周内,在闲鱼上被疯狂转了2万次的Redis资料!!!
  12. 增量式编码器有哪些分类?增量式编码器是如何工作的?
  13. Web项目中前端页面引用外部Js和Css的路径问题
  14. 使用print.js进行分页打印
  15. C++:从入门到放弃[3]计算
  16. 使用YOLOv5实现多路摄像头实时目标检测
  17. 个人收款码和商家收款码有哪些区别
  18. operator*() 和 operator-()
  19. 肺结节圆形边界光滑_【每周一例】32期讨论实录 肺部这光滑结节,是PSP吗?
  20. 示波器和万用表测量直流电压的区别

热门文章

  1. 新建的word文档打开显示“禁用宏设置”
  2. 概率统计Python计算:总体未知参数的矩估计
  3. 软考高级-考试细节与学习计划篇
  4. java小数转二进制_java十进制小数转二进制
  5. java中Scanner使用方法详细
  6. Debian安装ATI 显卡
  7. 隐私保护与数据安全的区别_如何在安全工程领域找到一份工作:安全,信任和隐私之间有什么区别?...
  8. 「springcloud 2021 系列」Spring Cloud Gateway + OAuth2 + JWT 实现统一认证与鉴权
  9. vue 点击表格单元格可编辑
  10. QT中的D指针与Q指针