java有理数类的封装_第4章类与对象==有理数的类封装(分数的四则运算)
问题;
对分数进行四则运算,使结果仍然是分数
代码:
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章类与对象==有理数的类封装(分数的四则运算)相关推荐
- java 注册探探账号_零基础手把手教你开发探探类社交软件Tinder
原标题:零基础手把手教你开发探探类社交软件Tinder 目录介绍 1.关于项目App整体架构 1.1项目整体架构 1.1.1 目前项目使用架构 1.1.2 目前常见的架构 1.1.3 MVP架构优点及 ...
- java 获取 t 的类型_如何获取类型为T的字段的类?
我为某些SpringMVC控制器编写JUnit测试.JUnit测试的初始化对于我的所有Controllers测试都是通用的,因此我想创建一个抽象类来执行此初始化. 因此,我创建了以下代码: @RunW ...
- java怎么写dnf辅助_易语言地下城与勇士辅助自动刷图类源码
DNF辅助自动刷图类 仅供学习参考,禁止商业用途 .版本 2 .支持库 EThread .支持库 spec .程序集 自动 .子程序 自动刷图 .判断开始 (全局_总开关.自动刷图开关 = 假) 全局 ...
- java.util.list源码_关于fest-util源码包Collections集合工具类过滤、判空、格式化及复制克隆处理...
一.前言 关于fest-util源码包org.fest.util.Collections集合处理类,实现对数组转换List序列集合.集合duplicatesFrom克隆复制.集合判空isEmpty.并 ...
- java 通过反射得到命名空间_利用反射得到一个命名空间下的所有类,并调用?...
当年话下 Assembly.LoadFrom("assemblyName").GetTypes();Assembly.Load("assemblyName"). ...
- java 获取操作系统临时目录_获取当前操作系统的临时目录对象或者地址
p**a添加了笔记:engine = n... p**a添加了笔记:boolean eq... y**4在课程中提出了问题:package co... y**o向课程作业中提交了代码 p**a添加了笔 ...
- java未将对象引用设置_未将对象引用设置到对象的实例,怎么解决啊??
展开全部 意思是你使用这个对象之前没有将之实例化. 例如: Label l = new Label: 这个是已经实例化了,可以e68a84e8a2ad3231313335323631343130323 ...
- Java课设对对碰_第11章对对碰游戏(图形版)(Java游戏编程原理与实践教程课件).ppt...
游戏界面和相关图片素材 11.3 程序设计的步骤 11.3.1 设计游戏窗口类(GameRoom.java) 游戏窗口类GameRoom实现游戏全部功能,继承JFrame组件实现的.是由上方Panel ...
- python中属性和类级变量_六、Python类变量和实例变量(类属性和实例属性)
我们知道,无论是在类中定义的属性还是方法,在类的外部,都无法直接调用它们,因此,我们完全可以把类看做是一个独立的作用域(称为类命名空间),则类属性其实就是定义在类命名空间内的变量(类方法其实就是定义的 ...
最新文章
- 防止IFRAME页被嵌套
- 用tf的VocabularyProcessor创建词汇表vocab
- java虚拟机的生命周期
- html5晋级之路-css背景
- 《BI那点儿事》数据流转换——派生列
- SQL 查询笔记:子查询,分组查询,左连接查询。。。。。
- 黑客攻防技术宝典web实战篇:利用信息泄露习题
- iOS入门-公司通讯录项目(教你一步步完成一个公司通讯录)
- 数字集成电路物理设计_数字世界的物理词汇
- cpu之RegDst_Ins
- 一周内,在闲鱼上被疯狂转了2万次的Redis资料!!!
- 增量式编码器有哪些分类?增量式编码器是如何工作的?
- Web项目中前端页面引用外部Js和Css的路径问题
- 使用print.js进行分页打印
- C++:从入门到放弃[3]计算
- 使用YOLOv5实现多路摄像头实时目标检测
- 个人收款码和商家收款码有哪些区别
- operator*() 和 operator-()
- 肺结节圆形边界光滑_【每周一例】32期讨论实录 肺部这光滑结节,是PSP吗?
- 示波器和万用表测量直流电压的区别
热门文章
- 新建的word文档打开显示“禁用宏设置”
- 概率统计Python计算:总体未知参数的矩估计
- 软考高级-考试细节与学习计划篇
- java小数转二进制_java十进制小数转二进制
- java中Scanner使用方法详细
- Debian安装ATI 显卡
- 隐私保护与数据安全的区别_如何在安全工程领域找到一份工作:安全,信任和隐私之间有什么区别?...
- 「springcloud 2021 系列」Spring Cloud Gateway + OAuth2 + JWT 实现统一认证与鉴权
- vue 点击表格单元格可编辑
- QT中的D指针与Q指针