Java sdut acm 2253 分数加减法

题目链接:点击打开链接

分数加减法
Time Limit: 1000MS Memory Limit: 65536KB 
Submit Statistic Discuss 
Problem Description
编写一个C程序,实现两个分数的加减法


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


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


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


Output
对于输入数据的每一行输出两个分数的运算结果。
注意结果应符合书写习惯,没有多余的符号、分子、分母,并且化简至最简分数 
Example Input
1/8+3/8
1/4-1/2
1/3-1/3
Example Output
1/2
-1/4
0


代码实现:

import java.util.Scanner;

class Fenshi {
	int fz;
	int fm;

	public Fenshi() {
	}

	public Fenshi(int fz, int fm) {
		this.fz = fz;
		this.fm = fm;
	}

	public Fenshi add(Fenshi fs) {
		int newfz = fz * fs.fm + fm * fs.fz;
		int newfm = fm * fs.fm;
		return new Fenshi(newfz,newfm);

	}

	public Fenshi sub(Fenshi fs) {
		int newfz = fz * fs.fm - fm * fs.fz;
		int newfm = fm * fs.fm;
		return new Fenshi(newfz,newfm);
	}
}

public class Main {
	static int gcd(int a, int b) {
		if (b == 0)
			return a;
		else
			return gcd(b, a % b);
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner input = new Scanner(System.in);
		while (input.hasNext()) {
			String str = input.next();
			char[] array = str.toCharArray();
			int a = array[0] - '0';
			int b = array[2] - '0';
			int c = array[4] - '0';
			int d = array[6] - '0';
			Fenshi fs1 = new Fenshi(a, b);
			Fenshi fs2 = new Fenshi(c, d);
			Fenshi result = new Fenshi();
			if (array[3] == '+')
				result = fs1.add(fs2);
			else if (array[3] == '-')
				result = fs1.sub(fs2);
			if (result.fz % result.fm == 0 || result.fz == 0)
				System.out.println(result.fz / result.fm);
			else {
				int g = gcd(Math.abs(result.fz), result.fm);
				System.out.printf("%d/%d\n", result.fz / g, result.fm / g);
			}
		}
	}
}


你可能感兴趣的:(Java)