分割字符串

来源:互联网 发布:淘宝开店培训班 编辑:程序博客网 时间:2024/05/23 20:25

分数四则运算

Time Limit: 1000MS Memory Limit: 65536KB
Submit Statistic Discuss

Problem Description

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

Input

输入包含多行数据;

每行数据是一个字符串,格式是"a/boc/d",其中a, b, c, d为数字(每个数字保证为正数并且不存在正号)。o是运算符"+"或者"-","*","\"。

数据以EOF结束,输入数据保证合法。

Output

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

Example Input

1/100+3/1001/4-1/21/3-1/31/2*2/11/2\1/2

Example Output

1/25-1/4011
小知识:用split分割字符串时,以下字符需要加转移字符“\\”:  "|"  "+"  "*"  ":"  "."  "^"。 若字符是“\”,则写成“\\\\”。若有多个分隔符,则每个分隔符之间由“|”连接。

import java.util.Scanner;class Rational{int up;int down;Rational(){}Rational(int a,int b){if(a==0){up=0;down=1;}else setnum(a,b);}void setnum(int a,int b){int m=min(Math.abs(a),Math.abs(b));          //Math.abs(a):求a的绝对值。int n=max(Math.abs(a),Math.abs(b));int i=m;for(;i>=1;i--)                                    //求a和b的最大公因数。{if(n%i==0&&m%i==0)break;}a=a/i;b=b/i;up=a;down=b;}int min(int a,int b){if(a>b)return b;else return a;}int max(int a,int b){if(a>b)return a;else return b;}Rational add(Rational r){int a=up*r.down+down*r.up;int b=down*r.down;Rational result=new Rational(a,b);return result;}Rational sub(Rational r){int a=up*r.down-down*r.up;int b=down*r.down;Rational result=new Rational(a,b);return result;}Rational muti(Rational r){int a=up*r.up;int b=down*r.down;Rational result=new Rational(a,b);return result;}Rational dev(Rational r){int a=up*r.down;int b=down*r.up;Rational result=new Rational(a,b);return result;}}public class Main {public static void main(String[] args) {Scanner in=new Scanner(System.in);while(in.hasNext()){String str=in.next();int i;int f=0;for(i=0;i<str.length();i++){char c=str.charAt(i);if(c=='+'){f=1;break;}else if(c=='-'){f=2;break;}else if(c=='*'){f=3;break;}else if(c=='\\')                    //判断除号。{f=4;break;}} String string[]=str.split("\\+|-|\\*|\\\\|/");             //分割字符串,不同的字符之间用“|”隔开。Rational r1=new Rational(Integer.parseInt(string[0]),Integer.parseInt(string[1]));                                             //Integer.parseInt(string[0]),将全是数字的字符串转为整形数字。Rational r2=new Rational(Integer.parseInt(string[2]),Integer.parseInt(string[3]));Rational result=new Rational();if(f==1){result=r1.add(r2);}else if(f==2){result=r1.sub(r2);}else if(f==3){result=r1.muti(r2);}else if(f==4){result=r1.dev(r2);}int a=result.up;int b=result.down;if(a==0)System.out.println(a);else if(Math.abs(a)==Math.abs(b)){if(a*b<0){System.out.println("-1");}else System.out.println("1");}else if(a*b<0){System.out.println(-Math.abs(a)+"/"+Math.abs(b));}else{System.out.println(Math.abs(a)+"/"+Math.abs(b));}}}}

0 0
原创粉丝点击