H - 分数加减法_Java

Description

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

Input

输入包含多行数据
每行数据是一个字符串,格式是"a/boc/d"。

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

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

Output

对于输入数据的每一行输出两个分数的运算结果。
注意结果应符合书写习惯,没有多余的符号、分子、分母,并且化简至最简分数

Sample

Input
1/8+3/8
1/4-1/2
1/3-1/3

Output
1/2
-1/4
0

import java.util.*;

class MATH {
	String str;
	
	public MATH(String str) {
		super();
		this.str = str;
		
	}
	
	public void split() {
		int x1 = str.charAt(0)-'0';
		int y1 = str.charAt(2)-'0';
		int x2 = str.charAt(4)-'0';
		int y2 = str.charAt(6)-'0';
		
		//求分母的最小公倍数
		int Y = y1*y2/gcd(y1,y2);
		//转化分子
		x1 = x1*Y/y1;
		x2 = x2*Y/y2;
		
		//计算分子
		int X = Switch(str.charAt(3),x1,x2);
		//求分母和分子最小公约数
		int yue = gcd(Math.abs(X),Y);
		X = X/yue;
		Y = Y/yue;
		if(X == 0)
			System.out.println(0);
		else if(Y != 1)
			System.out.println(X+"/"+Y);
		else
			System.out.println(X);
	}
	
	//辗转相除求最大公因数
	public int gcd(int x,int y) {
		if(x<y) {
			int t = x;
			x = y;
			y = t;
		}
		if(y == 0)
			return x;
		else
			return gcd(y,x%y);
	}
	
	public int Switch(char ch,int x,int y) {
		int X = 0;
		switch(ch) {
		case '+':{
			X = x+y;
			break;
		}
		case '-':{
			X = x-y;
			break;
		}
		}
		return X;
	}
	
	
}
 
public class Main {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		
		MATH math;
		while(input.hasNext()) {
			math = new MATH(input.next());
			math.split();
		}
		
		input.close();
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值