设为首页 加入收藏

TOP

Java有理数的四则运算
2014-11-24 08:27:25 来源: 作者: 【 】 浏览:1
Tags:Java 有理 四则 运算

Java实现对有理数的加减乘除运算,以及求最大公约数并约分。


文件1:Fraction.java


public class Fraction {
int num;
int den;
}


文件2:Rational.java


public class Rational {
int a;
int b;
Fraction f = new Fraction();
boolean dowhile = true;

public Rational(int a, int b){
//约分
f.num = a;
f.den = b;
doFraction(f);

this.a = f.num;
this.b = f.den;
}

public String toString(){ //转换成分式
if (a!=b)
return Integer.toString(this.a) + '/' + Integer.toString(this.b);
else
return "1";
}
public Rational add(Rational r){ //加法运算
return new Rational(this.a * r.b + this.b * r.a,this.b * r.b);
}
public Rational subtract(Rational r){ //减法运算
return new Rational(this.a * r.b - this.b * r.a,this.b * r.b);
}
public Rational multiply(Rational r){ //乘法运算
return new Rational(this.a * r.a,this.b * r.b);
}
public Rational divide(Rational r){ //除法运算
return new Rational(this.a * r.b,this.b * r.a);
}
public String cal(){
if (a % b == 0)
return Integer.toString(a/b);
else
return String.valueOf((float)a / (float)b);
}

//约分
public void doFraction(Fraction f){
int subnum = 1;
int min = Math.min(f.num, f.den);
//找出最大公约数
for(int i=2;i<=min;i++){
if((f.num%i==0)&&(f.den%i==0)){
subnum = i;
}
}

f.num = f.num/subnum;
f.den = f.den/subnum;
}
}


文件3:RationalTest.java


public class RationalTest {
public static void main(String[] args){
Rational a = new Rational(2,3);
Rational b = new Rational(3,7);
Rational c = new Rational(5,9);
Rational s = a.add(b).add(c);

System.out.println("Calculate 1: " + a.toString() + " + " + b.toString() + " + " + c.toString() + " = " + s.toString());
System.out.println("Calculate 2: " + a.toString() + " + " + b.toString() + " + " + c.toString() + " = " + s.cal());

Rational i = new Rational(3,4);
Rational j = new Rational(2,3);
Rational k = i.multiply(j);
System.out.println(k.toString() + " --> " + k.cal());
//约分
Rational sum = new Rational(52,68);
System.out.println(sum.toString());
}
}


Output Test Result:


Calculate 1: 2/3 + 3/7 + 5/9 = 104/63
Calculate 2: 2/3 + 3/7 + 5/9 = 1.6507937
1/2 --> 0.5
13/17


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Java写的检索文件&合并文件功能 下一篇Ubuntu 12.04下编译ffmpeg

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·如何从内核协议栈到 (2025-12-27 03:19:09)
·什么是网络协议?有哪 (2025-12-27 03:19:06)
·TCP/ IP协议有哪些 (2025-12-27 03:19:03)
·怎样用 Python 写一 (2025-12-27 02:49:19)
·如何学习python数据 (2025-12-27 02:49:16)