您的位置:首页 > 其它

第4章类与对象==有理数的类封装(分数的四则运算)

2016-09-20 10:41 302 查看
问题;

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

代码:

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<b){
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;
}

}

运行结果:



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐