Java趣味编程案例22----分数比较

比较两个分数的大小。

思路:
1)分母相同则比较分子,分子大则分数值大
2)分子相同比较分子,分母大则分数小
3)分子分母均不相同则通分后比较分子的大小

import java.util.Scanner;

public class _6_3 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        char flag=' ';
        System.out.println("请输入第一个分数:");
        String s1=scanner.next();
        System.out.println("请输入第二个分数:");
        String s2=scanner.next();

        //解析分子分母,获得相应的值
        int index1=s1.indexOf("/");
        int fz1=Integer.parseInt(s1.substring(0,index1));
        int fm1=Integer.parseInt(s1.substring(index1+1));

        int index2=s2.indexOf("/");
        int fz2=Integer.parseInt(s2.substring(0,index2));
        int fm2=Integer.parseInt(s2.substring(index2+1));

        //如果分子相同
        if(fz1==fz2){
            System.out.println("同分子比较大小:");
            if(fm1<fm2)
                flag='>';
            else if(fm1>fm2)
                flag='<';
            else
                flag='=';
        }else if(fm1==fm2){
            System.out.println("同分母比较大小:");
            if(fz1>fz2)
                flag='>';
            else if(fz1<fz2){
                flag='<';
            }else{
                flag='=';
            }
        }else{
            System.out.println("异分子分母比较大小:");
            flag=tongfen(fz1,fm1,fz2,fm2);
        }

        System.out.println("结果为:"+s1+""+flag+""+s2);
    }

    //求最大公约数
    public static int divisor(int a,int b){
        int temp;
        if(a<b){
            temp=a;
            a=b;
            b=temp;
        }
        while(b!=0){
            temp=a%b;
            a=b;
            b=temp;
        }
        return a;
    }

    //求最小公倍数
    public static int multiple(int a,int b){
        int temp=divisor(a,b);
        return a*b/temp;
    }

    //通分
    public static char tongfen(int fz1,int fm1,int fz2,int fm2){
        char flag=' ';
        int gbs=multiple(fm1,fm2);
        //获得通分后新的分子
        int xfz1=gbs*fz1/fm1;
        int xfz2=gbs*fz2/fm2;

        System.out.println(fz1+"/"+fm1+"="+xfz1+"/"+gbs);
        System.out.println(fz2+"/"+fm2+"="+xfz2+"/"+gbs);

        //通分后分母相同比较分子
        if(xfz1<xfz2){
            flag='<';
        }else if(xfz1>xfz2){
            flag='>';
        }else{
            flag='=';
        }
        return flag;
    }
}

结果:
Java趣味编程案例22----分数比较