编写一个程序,实现两个分数的加减法

输入

输入包含多行数据

每行数据是一个字符串,格式是"a/boc/d"。

其中a, b,c, d是一个0-9的整数。o是运算符"+"或者"-"。

 

数据以EOF结束

输入数据保证合法

输出

对于输入数据的每一行输出两个分数的运算结果。

注意结果应符合书写习惯,没有多余的符号、分子、分母,并且化简至最简分数

样例输入

1/8+3/8

1/4-1/2

1/3-1/3

样例输出

1/2

-1/4

0


public static void main(String[] args) { 
Scanner in = new Scanner(System.in);
String str;
int n1,n2,n3,d1,d2,d3,op,x,y,z;
boolean neg = false;
while(in.hasNext()){
neg = false;
str = in.next();
if(str.equals("EOF")){
break;
}

op = 1;
n1 = str.charAt(0)-'0';
d1 = str.charAt(2)-'0';
if(str.charAt(3)=='-'){
op = -1;
}

n2 = str.charAt(4)-'0';
d2 = str.charAt(6)-'0';

n3 = n1*d2+op*n2*d1;
d3 = d1*d2;

if(n3==0){
System.out.println("0");
continue;
}

if(n3<0){
neg = true;
}
n3 = Math.abs(n3);
d3 = Math.abs(d3);

x = n3>d3? n3:d3;
y = n3<d3? n3:d3;

z = x%y;
while(z!=0){
x = y;
y = z;
z = x%y;
}

n3 = n3/y;
d3 = d3/y;

if(neg){
System.out.print('-');
}
if(d3 == 1){
System.out.println(n3);
}
else {
System.out.println(n3+"/"+d3);
}
}
}