public class Fraction {
private int numerator;//分子
private int denominator;//分母
public Fraction (){}
public Fraction (int numerator,int denominator){
this.numerator=numerator;
this.denominator=denominator;
}
public int getDenominator() {
return denominator;
}
public int getNumerator() {
return numerator;
}
public void setDenominator(int denominator) {
this.denominator = denominator;
}
public void setNumerator(int numerator) {
this.numerator = numerator;
}
//约分
public void reduction(Fraction fra){
int num=fra.getNumerator();
int den=fra.getDenominator();
int i=0;
do {
i++;
if (num%i==0 && den%i==0){
num=num/i;
den=den/i;
i=1;
}
}while (i<den);
fra.setNumerator(num);
fra.setDenominator(den);
}
//规范化 将负号放至分母
public void normalize(){
if (this.getNumerator()<0 && this.getDenominator()<0) {
int num=getNumerator();
int den=getDenominator();
setNumerator(-num);
setDenominator(-den);
}
if (this.getNumerator()>0 && this.getDenominator()<0){
int num=getNumerator();
int den=getDenominator();
setNumerator(-num);
setDenominator(-den);
}
}
//通分
public void commondenominator(Fraction fra){
if (fra.getDenominator() != this.getDenominator()){
int num1=this.getNumerator();
int num2=fra.getNumerator();
int den1=this.getDenominator();
int den2=fra.getDenominator();
fra.setDenominator(den2*den1);
this.setDenominator(den2*den1);
fra.setNumerator(num2*den1);
this.setNumerator(num1*den2);
}
}
//四则运算
public Fraction add(Fraction otherfraction){
this.normalize();
otherfraction.normalize();
this.commondenominator(otherfraction);
int num = this.getNumerator() + otherfraction.getNumerator();
int den = otherfraction.getDenominator();
Fraction ret = new Fraction(num,den);
reduction(ret);
ret.normalize();
return ret;
}
public Fraction dec(Fraction otherfraction){
this.normalize();
otherfraction.normalize();
this.commondenominator(otherfraction);
int num = this.getNumerator() - otherfraction.getNumerator();
int den = otherfraction.getDenominator();
Fraction ret = new Fraction(num,den);
ret.normalize();
reduction(ret);
return ret;
}
public Fraction mul(Fraction otherfraction){
int num = this.getNumerator() * otherfraction.getNumerator();
int den = this.getDenominator() * otherfraction.getDenominator();
Fraction ret = new Fraction(num,den);
ret.normalize();
reduction(ret);
return ret;
}
public Fraction div(Fraction otherfraction){
int num = this.getNumerator() * otherfraction.getDenominator();
int den = this.getDenominator() * otherfraction.getNumerator();
Fraction ret = new Fraction(num,den);
ret.normalize();
reduction(ret);
return ret;
}
}
测试程序
public class Main {
public static void main(String[] args) {
Fraction fraction1 = new Fraction(2,-4);
Fraction fraction2 = new Fraction(-1,3);
Fraction answer = new Fraction(0,0);
answer=fraction1.add(fraction2);
System.out.println(answer.getNumerator() +"/"+answer.getDenominator());
answer=fraction1.dec(fraction2);
System.out.println(answer.getNumerator() +"/"+answer.getDenominator());
answer=fraction1.mul(fraction2);
System.out.println(answer.getNumerator() +"/"+answer.getDenominator());
answer=fraction1.div(fraction2);
System.out.println(answer.getNumerator() +"/"+answer.getDenominator());
}
}
结果:
![](https://img-blog.csdnimg.cn/img_convert/78045c098e7dd56c6497b289f80f5317.png)