版权声明:禁止转载,翻版必究 https://blog.csdn.net/qq_41341757/article/details/83584441
Problem Description
编写程序,实现两个分数的加减法
Input
输入包含多行数据;
每行数据是一个字符串,格式是"a/boc/d",其中a, b, c, d为数字(每个数字保证为正数并且不存在正号)。o是运算符"+“或者”-","*",""。
数据以EOF结束,输入数据保证合法。
Output
直接输出结果,并且注意结果应符合书写习惯,没有多余的符号、分子、分母,并且化简至最简分数形式。
Sample Input
1/100+3/100
1/4-1/2
1/3-1/3
1/2*2/1
1/2\1/2
Sample Output
1/25
-1/4
0
1
1
Hint
import java.util.Scanner;
public class Main
{
public static void main(String[] args)
{
Scanner reader=new Scanner(System.in);
while(reader.hasNext())
{
String s=reader.nextLine();
String []A=s.split(" |\\\\|\\+|\\-|\\*|\\/");
int a=Integer.parseInt(A[0]);
int b=Integer.parseInt(A[1]);
int c=Integer.parseInt(A[2]);
int d=Integer.parseInt(A[3]);
char x='+';
for(int i=0;i<s.length();i++)
{
if((s.charAt(i)=='/')||(s.charAt(i)>='0'&&s.charAt(i)<='9'))
{
continue;
}
else
{
x=s.charAt(i);
break;
}
}
int n=b*d;
int m= 0;
if(x=='+')
{
m=a*d+c*b;
}
else if(x=='-')
{
m=a*d-c*b;
}
else if(x=='*')
{
m=a*c;
}
else if(x=='\\')
{
m=a*d;
n=b*c;
}
if(m==0)
{
System.out.println("0");
continue;
}
if(m<0)
{
System.out.print("-");
m=-m;
}
Max max=new Max(n, m);
int flag=max.Maxll();
n=n/flag;
m=m/flag;
if(n==1)System.out.println(m);
else System.out.println(m+"/"+n);
}
reader.close();
}
}
class Max
{
int n;
int m;
int flag=0;
public Max(int n,int m)
{
this.n=n;
this.m=m;
}
public int Maxll()
{
for(int i=n;i>=1;i--)
{
if(n%i==0&&m%i==0)
{
flag=i;
break;
}
}
return flag;
}
}