import java.util.*;
public class Program_Fact
{
public static void main(String[] args)
{
Fact A=new Fact();
Fact B=new Fact();
Fact C=new Fact();
System.out.println("请输入第一个分数。");
A=Fact.PutIn(A);
System.out.println("请输入第二个分数。");
B=Fact.PutIn(B);
System.out.println("比较输入的两个分数大小:");
Fact.Compare(A, B);
System.out.print("\n第一个分数约分为:");
A=Fact.YueFen(A);
System.out.print("\n第二个分数约分为:");
B=Fact.YueFen(B);
System.out.print("\n两个分数通分后相加为:");
C=Fact.Add(A, B, C);
System.out.print("\n结果约分为:");
C=Fact.YueFen(C);
}
}
class Fact
{
private int fenzi;
private int fenmu;
public int getFenzi(){return fenzi;}
public int getFenmu(){return fenmu;}
public Fact(){}
public Fact(int fenzi,int fenmu)
{
this.fenzi=fenzi; //stil unfamiliar with this key word
this.fenmu=fenmu;
}
public static Fact PutIn(Fact A)
{
Scanner in=new Scanner(System.in); //what is system.in
System.out.print("请输入分子(整型):");
A.fenzi=in.nextInt(); //what is in.nextInt
System.out.print("请输入分母(整型):");
A.fenmu=in.nextInt();
return A;
}
public static void Compare(Fact A,Fact B)
{
double a=(double)A.fenzi/(double)A.fenmu;
double b=(double)B.fenzi/(double)B.fenmu;
if(a>b)
System.out.printf("%d/%d"+">"+"%d/%d",A.fenzi,A.fenmu,B.fenzi,B.fenmu);
else if(a<b)
System.out.printf("%d/%d"+"<"+"%d/%d",A.fenzi,A.fenmu,B.fenzi,B.fenmu);
else
System.out.printf("%d/%d"+"="+"%d/%d",A.fenzi,A.fenmu,B.fenzi,B.fenmu);
}
public static Fact YueFen(Fact A)
{
int p = 1;
for(int i=1;i<=(A.fenzi<A.fenmu?A.fenzi:A.fenmu);i++)
{
if(A.fenzi%i==0&&A.fenmu%i==0)
p=i;
}
A.fenzi=A.fenzi/p;
A.fenmu=A.fenmu/p;
System.out.printf("%d/%d",A.fenzi,A.fenmu);
return A;
}
public static Fact Add(Fact A,Fact B,Fact C)
{
int r=1;
int q=1;
for(int i=1;i<=(A.fenmu<B.fenmu?A.fenmu:B.fenmu);i++)
{
if(A.fenmu%i==0&&B.fenmu%i==0)
r=i;
}
q=A.fenmu*B.fenmu/r;
A.fenzi=q/A.fenmu*A.fenzi; //write as A.fenzi=
A.fenmu=q/A.fenmu*A.fenmu;
B.fenzi=q/B.fenmu*B.fenzi;
B.fenmu=q/B.fenmu*B.fenmu;
C.fenzi=A.fenzi+B.fenzi;
C.fenmu=B.fenmu;
if((A.fenzi+B.fenzi)%B.fenmu!=0)
System.out.printf("%d/%d"+"+"+"%d/%d"+"="+"%d/%d",A.fenzi,A.fenmu,B.fenzi,B.fenmu,A.fenzi+B.fenzi,B.fenmu);
else
System.out.printf("%d/%d"+"+"+"%d/%d"+"="+"%d",A.fenzi,A.fenmu,B.fenzi,B.fenmu,(A.fenzi+B.fenzi)/B.fenmu);
return C;
}
}