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;
}
}
结果: