思路
总体上先实现运算(加,乘法),最后统一对运算后的结果
加法 :新分子 =a.zi * b.mu+a.mu * b.zi;
新分母 =a.mu * b.mu;
乘法:实现更为简单,不再赘述;
化简:取k=Min(zi,mu);逐一递减的进行寻找能使分子分母同时被整除的那个k,并将分子分母同时除以k进行更新后即可得到最终结果
代码实现:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
Fraction a = new Fraction(in.nextInt(), in.nextInt());
Fraction b = new Fraction(in.nextInt(),in.nextInt());
a.print();
b.print();
a.plus(b).print();
a.multiply(b).plus(new Fraction(5,6)).print();
a.print();
b.print();
in.close();
}
}
class Fraction{
int zi;
int mu;
Fraction(int a,int b)
{
this.zi = a;
this.mu = b;
}
double toDouble()
{
return zi/(double)mu;
}
Fraction plus(Fraction r)
{
int xz;
int xm;
xz = this.zi*r.mu+r.zi*this.mu;
xm = this.mu*r.mu;
Fraction q = new Fraction(xz,xm);
return q;
}
Fraction multiply(Fraction r)
{
Fraction q = new Fraction(this.zi*r.zi,this.mu*r.mu);
return q;
}
void print()
{
Fraction q=f(this.zi,this.mu);
if(q.mu==1)
{
System.out.println(q.zi);
}
else
{
System.out.println(q.zi+"/"+q.mu);
}
}
public static Fraction f(int a,int b)
{
int k =Math.min(a, b);
while(a%k!=0||b%k!=0)
{
k--;
}
Fraction q = new Fraction(a/k,b/k);
return q;
}
}