JAVA 分数类

Description
设计一个分数类,分数的分子和分母用两个整型数表示,类中定义方法能够对分数进行加法、减法、乘法和除法运算。定义分数类的对象,进行运算并输出结果。
Input

输入不定组数的多组数据,每组一行,一行中第一个数据是字符串,"ADD"表示分数相加,"SUB"表示相减,"MUL"表示相乘,"DIV"表示相除。 然后是第一个分数的分子、分母,然后是第二个分数的分子和分母。中间用空格分隔。

Output
针对每组输入,有一行输出,第一个为运算后的分数的分子,第二个为分母。  要求:分子和分母要互质,如果是整数,分母为1 。中间用'/'分隔。参见样例
Sample Input

ADD 1 2 1 3

SUB 1 2 1 3

MUL 1 2 1 3  

DIV 1 2 1 3

SUB 2 3 1 3


Sample Output

5/6

1/6

1/6

3/2

1/3

import java.*;
import java.util.Scanner;
class Fenshu {  
private long molecular;// 分子  
private long denominator;// 分母  

public long getMolecular() {  
return molecular;  
}  
public long getDenominator() {  
return denominator;  
}  
public Fenshu(long molecular, long denominator) {  
this.molecular = molecular;  
if (denominator == 0) {  
System.out.print("分母不能为零");  
} else {  
this.denominator = denominator;  
}  
gaibian();  
}    
private Fenshu gaibian() {  
long gcd = this.gYueShu(this.molecular, this.denominator);  
this.molecular /= gcd;  
this.denominator /= gcd;  
return this;  
}  
private static long gYueShu(long a, long b) {  
while (b != 0) {  
long temp = a % b;  
a = b;  
b = temp;  
}  
long gyueshu = a;  
return gyueshu;  
}   
public Fenshu ADD(Fenshu fenShu) {   
return new Fenshu(this.molecular * fenShu.denominator + fenShu.molecular * this.denominator, this.denominator * fenShu.denominator);  
}  


public Fenshu SUB(Fenshu fenShu) {  
return new Fenshu(this.molecular * fenShu.denominator - fenShu.molecular * this.denominator, this.denominator * fenShu.denominator);  
}  


public Fenshu MUL(Fenshu fenShu) {  
return new Fenshu(this.molecular * fenShu.molecular, this.denominator * fenShu.denominator);  
}  

public Fenshu DIV(Fenshu fenShu){  
return new Fenshu(this.molecular*fenShu.denominator, this.denominator*fenShu.molecular);  

}  

public String toString() {  
return molecular + "/" + denominator; 

}
public class Main {
public static void main(String agrs[])
{
Scanner cin = new Scanner(System.in);
while(cin.hasNext())
{
int a,b,c,d;
String x;
x=cin.next();
a=cin.nextInt();
b=cin.nextInt();
c=cin.nextInt();
d=cin.nextInt();
Fenshu s1 = new Fenshu(a,b);
Fenshu s2 = new Fenshu(c,d);
if(x.charAt(0)=='A')
{
System.out.println(s1.ADD(s2));
}
if(x.charAt(0)=='S')
{
System.out.println(s1.SUB(s2));
}
if(x.charAt(0)=='M')
{
System.out.println(s1.MUL(s2));
}
if(x.charAt(0)=='D')
{
System.out.println(s1.DIV(s2));
}
}
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值