分數四則運算--java
阿新 • • 發佈:2018-11-02
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; } }